电话号码验证MVC

Leo*_*chi 29 c# regex asp.net-mvc jquery-validate validationattribute

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

MVC代码:

<ol class="row">
    <li class="cell" style="width: 20%;">Phone Number:</li>
    <li class="cell last" style="width: 60%;">
        @Html.TextBoxFor(model => model.PhoneNumber, new { @class = "textbox" }) 
        @Html.ValidationMessageFor(model => model.PhoneNumber)
    </li>
</ol>
Run Code Online (Sandbox Code Playgroud)

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; }
Run Code Online (Sandbox Code Playgroud)

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

med*_*eda 67

模型

[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; }
Run Code Online (Sandbox Code Playgroud)

视图:

@Html.LabelFor(model => model.PhoneNumber)
@Html.EditorFor(model => model.PhoneNumber)
@Html.ValidationMessageFor(model => model.PhoneNumber)
Run Code Online (Sandbox Code Playgroud)

  • 怎么样'DisplayFor`?可以采用像**8005551212**这样的字符串并将其转换为**(800)555-1212**吗? (2认同)
  • 仅仅这个DataAnnotation还不够吗?[数据类型(数据类型.电话号码)]。如果我们需要正则表达式进行验证,那么为什么我们需要 DataType.PhoneNumber。其目的是什么? (2认同)
  • 很明显,因为并非每个国家/地区的电话号码格式都相同 (2认同)

Sla*_*lan 6

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

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


DLe*_*Leh 5

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

@Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" })
Run Code Online (Sandbox Code Playgroud)