显示正则表达式更正错误消息

时间:2016-03-10 17:17:27

标签: regex asp.net-mvc validation data-annotations

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

[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 ,则错误消息为:“必须插入至少1位数字”。

2 个答案:

答案 0 :(得分:1)

可以这样做的一种方法是创建自己的正则表达式验证属性。您可以扩展RegularExpressionAttribute,从而分离正则表达式的不同部分:

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

然后您可以这样使用它:

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

答案 1 :(得分:0)

我的自定义课程:

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));