值“(SomeNumber)”对 Number 无效

The value '(SomeNumber)' is not valid for Number

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

The value '09124573957' is not valid for Number

当我按下创建按钮时,我的编辑框出现错误

这是我在视图模型中的 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; }

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

整数不支持前导零。如果您尝试设置值 9124573957,您应该不会看到此错误。 编辑:这仅在您使用 long 而不是 int 来存储值时才有效,因为 9124573957 大于 int.MaxValue.

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

数字数据类型(int、double 等)适合做数学题!问问自己:将其中两个数字相加是否有用,例如你的电话号码和你朋友的电话号码相加是什么意思?如果那根本没有意义,那它就不是一个数字。

电话号码是字符串,尽管它们通常被称为数字。

您的 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; }

Phone 数字应该存储为字符串而不是数字

因为:

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