电话号码validationMVC

我正在尝试使用正则表达式来validation电话号码,并在提交无效的号码或电话号码时返回错误。

MVC代码

  1. Phone Number:
  2. @Html.TextBoxFor(model => model.PhoneNumber, new { @class = "textbox" }) @Html.ValidationMessageFor(model => model.PhoneNumber)

C#代码

 [DataType(DataType.PhoneNumber)] [Display(Name = "Phone Number")] [Required(ErrorMessage = "Phone Number Required!")] [RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone format is not valid.")] public string PhoneNumber { get; set; } 

但是,输入框不会向用户显示消息,表明提交的电话号码无效。

模型

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

视图:

 @Html.LabelFor(model => model.PhoneNumber) @Html.EditorFor(model => model.PhoneNumber) @Html.ValidationMessageFor(model => model.PhoneNumber) 

您在页面上没有validation器。 添加这样的内容以显示validation消息。

 @Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" }) 

尝试使用Mobile No的简单正则表达式

 [Required (ErrorMessage="Required")] [RegularExpression(@"^(\d{10})$", ErrorMessage = "Wrong mobile")] public string Mobile { get; set; } 

与上述答案一起尝试以最小和最大长度:

在模型中

 [StringLength(13, MinimumLength=10)] public string MobileNo { get; set; } 

在视野中

  
@Html.TextBoxFor(m => m.MobileNo, new { @class = "form-control" , type="phone"}) @Html.ValidationMessageFor(m => m.MobileNo,"Invalid Number") @Html.CheckBoxFor(m => m.IsAgreeTerms, new {@checked="checked",style="display:none" })

要使用(###)### – ####格式显示电话号码,您可以创建新的HtmlHelper。

用法

 @Html.DisplayForPhone(item.Phone) 

HtmlHelper扩展

 public static class HtmlHelperExtensions { public static HtmlString DisplayForPhone(this HtmlHelper helper, string phone) { if (phone == null) { return new HtmlString(string.Empty); } string formatted = phone; if (phone.Length == 10) { formatted = $"({phone.Substring(0,3)}) {phone.Substring(3,3)}-{phone.Substring(6,4)}"; } else if (phone.Length == 7) { formatted = $"{phone.Substring(0,3)}-{phone.Substring(3,4)}"; } string s = $"{formatted}"; return new HtmlString(s); } } 

试试这个:

 [DataType(DataType.PhoneNumber, ErrorMessage = "Provided phone number not valid")] 

或者您可以使用JQuery – 只需将输入字段添加到“phone”类中,并将其放在脚本部分中:

 $(".phone").keyup(function () { $(this).val($(this).val().replace(/^(\d{3})(\d{3})(\d)+$/, "($1)$2-$3")); 

没有错误消息,但在输入所有十位数字之前,您可以看到电话号码格式不正确。