DisplayFormat DataAnnotation不起作用?

时间:2016-05-18 13:57:58

标签: asp.net-mvc

我正在使用MVC 5而我正在尝试格式化电话号码。我找到了一些例子,但我似乎无法让它们中的任何一个起作用。有人看到我做错了吗?

查看:

<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>

视图模型:

[DisplayName("Phone Number")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:###-###-####}")]
public string PhoneNumber { get; set; }

以及我试过这个...虽然我不需要这个作为必填字段。我不确定ReqularExpression是否需要它?

[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和View中的内容。这只是在我的编辑中显示没有任何格式的电话号码。作为附注,如果它有所作为,我正在使用MVC 5.2.3。

[DisplayName("Phone Number")]
[DisplayFormat(DataFormatString = "{0:###-###-####}", ApplyFormatInEditMode = true)]
public string PhoneNumber { get; set; }

查看

<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>

1 个答案:

答案 0 :(得分:0)

目前还不清楚你到底想要什么。

这应该用于验证目的。

[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

<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>

更新:

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

[DisplayFormat(DataFormatString = "{0:###-###-####}", ApplyFormatInEditMode = true)]
public string Phone { get; set; }