我试图对用户输入的手机号码进行验证,尽管为10位手机号码添加正则表达式。
这是Model类
public partial class student1
{
public int StudentId { get; set; }
[Required]
[StringLength(30)]
public string Name { get; set; }
public string Branch { get; set; }
[Display(Name = "Mobile Number:")]
[Required(ErrorMessage = "Mobile Number is required.")]
[RegularExpression("^([07][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | 8[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | 9[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])", ErrorMessage = "Invalid Mobile Number.")]
public Nullable<int> Mobile { get; set; }
}
Create
查看
@Html.EditorFor(model => model.Mobile)
@Html.ValidationMessageFor(model => model.Mobile, "", new { @class = "text-danger" })
当我运行它时,对于输入少于10的手机号码,它会显示我写的错误消息。但是对于10或更高的价值,我收到了一条新消息
值'999999999'对手机号码无效:。
我不知道这条消息来自哪里。另外,为什么它不接受10位数值?
答案 0 :(得分:2)
int
的最大 值
2147483647
小于9999999999因此它是int的溢出,因此在模型绑定之前,它是来自Controller的模型验证的错误消息。
将int
转换为long
public Nullable<long> Mobile { get; set; }
同时检查正则表达式,它也可能会遗漏一些有效数字。
int
c#source的最大值:
https://msdn.microsoft.com/en-us/library/system.int32.maxvalue(v=vs.110).aspx
答案 1 :(得分:1)
尝试正则表达式= ^(\ d {1,3} [ - ]?)?\ d {10} $