我正在使用数据注释,这是一个关于电话簿的简单项目我想添加一个人,我不知道我为什么收到
当我按下按钮创建时,在我的编辑框下出现值'09124573957'对数字
无效
错误
这是我在视图模型中的dto
[Required(ErrorMessageResourceType = typeof(App_Globaliz.Resource1), ErrorMessageResourceName = "Number")]
[DisplayName("Number")]
// [Phone]
[Range (0, 09889999999, ErrorMessageResourceName = "Range", ErrorMessageResourceType = typeof(App_Globaliz.Resource1))]
public int Num { get; set; }
你应该知道我正在使用一个资源文件,我在其中写了一些错误文本但这个错误我不知道它来自哪里
答案 0 :(得分:2)
数字数据类型(int,double等)用于做数学!只要问问自己:添加其中两个数字是否有用,例如:您的电话号码和您朋友的总和的含义是什么?如果这根本没有意义,那就不是一个数字。
电话号码是字符串,但通常称为号码。
答案 1 :(得分:2)
您的range validator
无效,因为数字不支持前导零...和range validator works on numeric type
它将使用RegularExpression validator
......这样......
[Required(ErrorMessageResourceType = typeof(App_Globaliz.Resource1), ErrorMessageResourceName = "Number")]
[Display(Name = "Number")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid number")]
public string PhoneNumber { get; set; }
答案 2 :(得分:1)
电话号码应存储为字符串而不是数字
由于:
答案 3 :(得分:0)
整数不支持前导零。如果您尝试设置值9124573957
,则不应该看到此错误。 编辑:只有当您使用long
代替int
来存储该值时,此功能才有效,因为9124573957大于int.MaxValue
。
如果您必须支持前导零,则必须将值存储为string
。