自定义DataAnnotations Validator派生自RegularExpressionAttribute

时间:2010-04-22 09:03:05

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

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 个答案:

答案 0 :(得分:11)

破解了!将以下内容添加到Global.asax.cs Application_Start()

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(NameAttribute), typeof(RegularExpressionAttributeAdapter));

答案 1 :(得分:1)

如果您想进行客户端验证,则应注册服务器端适配器以进行远程验证。

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

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