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

从RegularExpressionAttribute派生的自定义DataAnnotations验证器

  •  4
  • kim3er  · 技术社区  · 14 年前

    The Gu provides an example 如何创建重写RegularExpressionAttribute的自定义验证器。

    这样做的好处是你不必 create a custom Model Validator 但我不能让它工作。

    给定以下代码:

    public class NameAttribute : RegularExpressionAttribute {
        public NameAttribute()
            : base(@"^[\w\s\-\']+$") {
        }
    }
    

    这工作:

    [RegularExpression(@"^[\w\s\-\']+$")]
    

    但这并不是:

    [Name]
    

    我是否误解了scott示例的某个方面,或者该示例是否有缺陷,因为mvc不支持现成的派生类型,所以实际上我必须创建一个相应的modelvalidator?

    2 回复  |  直到 13 年前
        1
  •  10
  •   kim3er    14 年前

    破解它!将以下内容添加到global.asax.cs application_start()

    DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(NameAttribute), typeof(RegularExpressionAttributeAdapter));
    
        2
  •  1
  •   Andersson Melo    14 年前

    如果你想要客户端验证,你应该注册一个服务器端适配器进行远程验证。

    请参见这里: http://msdn.microsoft.com/en-us/magazine/ee336030.aspx

    这里: http://bradwilson.typepad.com/blog/2010/01/remote-validation-with-aspnet-mvc-2.html