代码之家  ›  专栏  ›  技术社区  ›  Offir

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

  •  0
  • Offir  · 技术社区  · 8 年前

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

    [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 然后告诉用户他没有包括至少一个大写和一个小写。

    如果密码为 abcdefgH 则错误消息将是:“必须插入至少1位数字”。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Søren Fritzbøger    8 年前

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

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

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

    [UpperAndLowerCaseAttribute, ErrorMessage = "ERRORMESSAGE"]
    public string Password { get; set; }
    
        2
  •  0
  •   Offir    8 年前

    我的自定义类:

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

    如何使用:

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

    将此添加到全局。asax在客户端得到认可:

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