美国电话号码(000)-000-0000或000-000-0000的MVCvalidation

如何为电话号码validation注释电话号码数据注释?

有没有办法在前端允许这种格式,如使用HTML5模式? 我知道HTML5和MVC3中都有电话号码的数据类型,但是想知道我们是否可以格式化(000)-000-0000或000-000-0000这样的格式,这样用户就不能输入超过10位的数字,如果他输入了一个以上述格式显示的手机。 到目前为止我试过这个:

[Required] [DataType(DataType.PhoneNumber)] [RegularExpression(@"^(\d{10})$", ErrorMessage = "Please enter proper phone number.")] [Display(Name = "phone")] public string Phone { get; set; } 

您可能对jQuery mask插件感兴趣。

http://digitalbush.com/projects/masked-input-plugin/

或者,您可以在电话号码输入上设置.blur ,如果有10位数字,则会格式化用户的输入。 例如:

 $("#PhoneNumber").blur(function (event) { var phoneNumber = $(this).val(); // replace all non-numeric characters in phoneNumber // do regex check on remaining digits to ensure there are 10 digits // if regex passes, format phoneNumber however you like %(this).val(phoneNumber); }); 

但是,在第二种情况下,您必须更改正则表达式数据注释,因为以这种方式格式化电话号码将始终使当前正则表达式检查失败。 无论您希望用户提交电话号码的格式应该是此正则表达式validation的格式。

我正在研究同样的事情。 这就是我最终得到的结果:

 [Required] [DataType(DataType.PhoneNumber)] [Display(Name = "Phone number")] [RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid number")] public string PhoneNumber { get; set; } 

这将寻找3个数字; (它们周围可能有括号),可能有短划线,句号或空格; 然后是3个数字,可能是短划线,句号或空格; 然后4个数字。

我从这里偷了它: http : //blog.stevenlevithan.com/archives/validate-phone-number

我有相同的情况,但我能够实现以上格式ex: (111) 111-1111当开始键入电话号码时,它强制使用以下代码片段/更改根据需要更改格式

  1. 从电话掩码脚本文件下载脚本文件
  2. 标记jscript函数ex:

     @Html.TextBoxFor(m => m.DayPhone, new { @class = "form_input", onkeydown = "javascript:backspacerDOWN(this,event);", onkeyup = "javascript:backspacerUP(this,event);" }) 

    用你的剃刀语法或方便的asp.net html格式。

希望对你有所帮助!

如果我理解你的问题,你可以使用RegularExpressionAttribute ,然后通过jquery unobrtrusivevalidation你的clietnvalidation你的输入