显示正则表达式正确的错误信息

Display regular expression correct error messages

我有一个正则表达式数据注释:

[StringLength(100)]
[Display(Description = "Password")]
[RegularExpression(@^((?=.*[a-z])(?=.*[A-Z])(?=.*\d)).+$)], ErrorMessage = " must include at least one upper case letter,one lower case letter and one numeric digit")]
public string Password { get; set; }

如何根据验证失败的原因显示错误消息?

如果密码是 12345678 则告诉用户他没有包括至少 1 个大写字母和 1 个小写字母。

如果密码是 abcdefgH,则错误消息将是:"must insert at least 1 digit"。

实现此目的的一种方法是创建您自己的正则表达式验证属性。您可以扩展 RegularExpressionAttribute,从而将正则表达式的不同部分分开:

public class UpperAndLowerCaseAttribute : RegularExpressionAttribute
{
    public UpperAndLowerCaseAttribute()
        : base("**YOUR REGEX HERE**")
    {
    }
}

然后您可以像这样使用它:

[UpperAndLowerCaseAttribute, ErrorMessage = "ERRORMESSAGE"]
public string Password { get; set; }

我的习惯class:

public class UpperAndLowerCaseAttribute : RegularExpressionAttribute
{
    public UpperAndLowerCaseAttribute()
        : base("**YOUR REGEX HERE**")
    {
    }
}

使用方法:

[UpperAndLowerCaseAttribute, ErrorMessage = "ERRORMESSAGE"]
public string Password { get; set; }

将此添加到 global.asax 以获得客户端的识别:

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(UpperAndLowerCaseAt‌​tribute), typeof(RegularExpressionAttributeAdapter));