【问题标题】:Display regular expression correct error messages显示正则表达式正确的错误信息
【发布时间】:2016-06-25 16:26:18
【问题描述】:

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

[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 个数字”。

【问题讨论】:

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


    【解决方案1】:

    我的自定义类:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 使用不显眼的验证在视图中不起作用,但我相信它应该适用于服务器端验证
      • 我的不显眼的验证工作除了这个。提交后也不起作用。
      • 我必须在 global.asax 中添加:DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(UpperAndLowerCaseAttribute), typeof(RegularExpressionAttributeAdapter));
      猜你喜欢
      • 2013-06-22
      • 2018-11-28
      • 2012-07-19
      • 1970-01-01
      • 2019-03-12
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多