值'(SomeNumber)'对数字

时间:2016-08-30 08:53:25

标签: c# asp.net-mvc data-annotations dto

我正在使用数据注释,这是一个关于电话簿的简单项目我想添加一个人,我不知道我为什么收到

  

值'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; }

你应该知道我正在使用一个资源文件,我在其中写了一些错误文本但这个错误我不知道它来自哪里

4 个答案:

答案 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)

电话号码应存储为字符串而不是数字

由于:

  1. 某些数字以0或+开头,不能存储在任何数值中(例如“002121132434”或“+9772323212”
  2. 您需要搜索电话号码作为字符串(例如,以特定子字符串开头的数字代表特定区域或特定服务提供商)
  3. 您需要进行一些字符串格式化(例如“+ 977-232-3212”)
  4. 您永远不需要进行数学运算(例如,您永远不会添加或减去2个电话号码)

答案 3 :(得分:0)

整数不支持前导零。如果您尝试设置值9124573957,则不应该看到此错误。 编辑:只有当您使用long代替int来存储该值时,此功能才有效,因为9124573957大于int.MaxValue

如果您必须支持前导零,则必须将值存储为string