我正在尝试继承RegularExpressionAttribute
以通过验证 SSN 来提高可重用性。
我有以下模型:
public class FooModel
{
[RegularExpression(@"^(?!000)(?!666)(?!9[0-9][0-9])\d{3}[- ]?(?!00)\d{2}[- ]?(?!0000)\d{4}$", ErrorMessage = "The SSN you entered is invalid. If you do not have this number please leave the field blank")]
public string Ssn { get; set; }
}
这将在客户端和服务器上正确验证。我想将冗长的正则表达式封装到它自己的验证属性中,如下所示:
public class SsnAttribute : RegularExpressionAttribute
{
public SsnAttribute() : base(@"^(?!000)(?!666)(?!9[0-9][0-9])\d{3}[- ]?(?!00)\d{2}[- ]?(?!0000)\d{4}$")
{
ErrorMessage = "SSN is invalid";
}
}
然后我改变了我的FooModel
喜欢:
public class FooModel
{
[Ssn(ErrorMessage = "The SSN you entered is invalid. If you do not have this number please leave the field blank")]
public string Ssn { get; set; }
}
现在验证不会在客户端呈现不显眼的数据属性。我不太确定为什么,因为这似乎两者本质上应该是同一回事。
有什么建议么?