电子邮件数据注释验证有效但电话没有

Lia*_*ton 9 validation asp.net-mvc-4

我在ASP.NET MVC4项目中使用数据注释来对电子邮件和电话字段执行客户端验证.电子邮件是客户端成功验证,但电话没有 - 它可以让我输入无效字符,只提醒我在提交表单(而不是在键入字符后立即进行)

在模型中:

[Required(ErrorMessage = "Email is required")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
[Display(Name = "Email")]
public string Email{ get; set; }

[Required(ErrorMessage = "Mobile is required")]
[DataType(DataType.PhoneNumber)]
[Phone]
[Display(Name = "Mobile number")]
public string Mobile { get; set; }
Run Code Online (Sandbox Code Playgroud)

在视图中我相信我包含了正确的脚本参考:

<script type="text/javascript" src="~/Scripts/jquery.validate.min.js" ></script
<script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js" ></script>
Run Code Online (Sandbox Code Playgroud)

..和使用HTML佣工(我使用TextBoxFor而不是EditorFor为我申请,我已经在这里省略清晰类属性)

@Html.LabelFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
@Html.TextBoxFor(model => model.Email, new { @type = "email" })       

@Html.LabelFor(model => model.Mobile)
@Html.ValidationMessageFor(model => model.Mobile)
@Html.TextBoxFor(model => model.Mobile, new { @type = "phone" }) 
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Kri*_*is1 6

[Required(ErrorMessage = "Mobile is required")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered mobile format is not valid.")]
public string Mobile{get; set;}
Run Code Online (Sandbox Code Playgroud)

它将匹配数字,如:0123456789,012-345-6789,(012)-345-6789等.


小智 0

我认为问题在于不支持手机类型。请参阅w3schools 的电话类型支持