范围数据注释属性

时间:2018-03-16 11:25:54

标签: asp.net-mvc asp.net-mvc-4

在我的项目用户表单中包含SSN(Social Security Number)字段,我使用javascript将文本框值格式化为SSN格式。

问题在于我使用了“范围数据”注释属性,当我的文本框包含格式化的值132-456-789时,它会显示数据注释错误消息“' DINTEGERC'必须在-2147483648和2147483647'。

之内

因此,请让我知道如何使Range Data注释属性与上面给定的值一起使用。

以下是该字段的定义。

[Range(-2147483648, 2147483647, ErrorMessage="\'DINTEGERC\' must be within -2147483648 and 2147483647.")]
public System.Nullable<int> DINTEGERC{get;set;}//;

文本框值:123-456-789无效。

1 个答案:

答案 0 :(得分:0)

您不能将RangeAttribute用于格式化数值,因为连字符不计为数字。格式化的SSN值必须通过应用string注释属性在模型类中使用RegularExpressionAttribute属性,如下例所示。

[RegularExpression(@"^\d{3}-\d{3}-\d{3}$", ErrorMessage = "Invalid SSN"]
public string SSN { get; set; }

如果您想在文本框中接受完全数字或格式化值,则RegularExpressionAttribute应更改为:

[RegularExpression(@"^\d{9}|\d{3}-\d{3}-\d{3}$", ErrorMessage = "Invalid SSN"]
public string SSN { get; set; }

注意:在DBA透视图中,您当前使用的int等数字数据类型应仅用于计算出的数字,因此string数据类型为优选的。