首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DisplayFormat DataAnnotation不工作?

DisplayFormat DataAnnotation不工作?
EN

Stack Overflow用户
提问于 2016-05-18 13:57:57
回答 1查看 2.4K关注 0票数 2

我正在使用MVC 5,我试图格式化一个电话号码。我找到了一些例子,但我似乎无法让它们发挥作用。有人看到我做错什么了吗?

查看:

代码语言:javascript
复制
<div class="form-group">
    @Html.LabelFor(model => model.PhoneNumber, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })
    </div>
</div>

ViewModel:

代码语言:javascript
复制
[DisplayName("Phone Number")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:###-###-####}")]
public string PhoneNumber { get; set; }

就像我尝试过this...although一样,我也不需要把它作为一个必需的字段。我不确定ReqularExpression是否会要求它?

代码语言:javascript
复制
[DisplayName("Phone Number")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid Phone number")]
public string PhoneNumber { get; set; }

更新

对不起,我在最初的帖子中没有说清楚,但我想做的只是在使用EditFor助手在编辑视图中显示一个电话号码时,以#格式显示它。这不是一个必需的字段,我想我真正需要的唯一验证是数字。我要去掉所有的破折号,当我把它存储在数据库中时。

更新2

以下是我目前在ViewModel和视图中的内容。这只是显示电话号码,在我的编辑没有任何格式。另外,请注意,如果这会产生影响,我将使用MVC 5.2.3。

代码语言:javascript
复制
[DisplayName("Phone Number")]
[DisplayFormat(DataFormatString = "{0:###-###-####}", ApplyFormatInEditMode = true)]
public string PhoneNumber { get; set; }

视图

代码语言:javascript
复制
<div class="form-group">
    @Html.LabelFor(model => model.PhoneNumber, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" })
    </div>
</div>
EN

回答 1

Stack Overflow用户

发布于 2016-05-18 14:14:44

现在还不清楚你到底想要什么。

这应该适用于验证目的。

代码语言:javascript
复制
[DisplayName("Phone Number")]
[RegularExpression(@"[0-9]{3}-[0-9]{3}-[0-9]{4}$", ErrorMessage = "Please enter the phone number as XXX-XXX-XXXX")]
public string PhoneNumber { get; set; }

另外,在您的视图中,您需要添加ValidationMessageFor

代码语言:javascript
复制
<div class="form-group">
    @Html.LabelFor(model => model.PhoneNumber, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" })
    </div>
</div>

更新:

若要使电话号码在编辑视图中正确显示:

代码语言:javascript
复制
[DisplayFormat(DataFormatString = "{0:###-###-####}", ApplyFormatInEditMode = true)]
public string Phone { get; set; }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37301817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档