电话数据注释.Net Core 1.1未验证

时间:2017-09-21 09:51:12

标签: validation razor data-annotations asp.net-core-1.1

我认为[Phone]注释应该将标准正则表达式模式应用于UI输入字段,但我发现我可以输入任何单词,各种特殊字符并且不会出现验证错误。

下面是HTML,然后是模型条目

<div class="form-group">
  <label class="col-sm-3 control-label">@Html.DisplayNameFor(m => m.Supplier.Phone)</label>
  <div class="col-sm-9">
    @Html.TextBoxFor(m => m.Supplier.Phone, new { @class = "form-control", id = "Phone" })
    <span asp-validation-for="Supplier.Phone" class="text-danger"></span>
   </div>
 </div>

[Required]
[Phone]
public string Phone { get; set; }

[EmailAddress],[Range]和[Required]等所有其他验证工作正常。

我确实遇到过这个stackoverflow article暗示HTML5不支持手机,这还是正确的吗?

1 个答案:

答案 0 :(得分:0)

是的。您必须为此使用正则表达式。 例如

[RegularExpression("^[0-9]*$", ErrorMessage = "The Phone Number field must contain only numbers")]

[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone format is not valid.")]

第一个将只允许使用数字值,而第二个将允许使用0123456789、012-345-6789,(012)-345-6789等格式。