自定义DataAnnotations Validator派生自RegularExpressionAttribute

kim*_*3er 5 validation asp.net-mvc data-annotations

Gu提供了一个示例,说明如何创建覆盖RegularExpressionAttribute的自定义验证程序.

这样做的好处是您不必创建自定义模型验证器,但我无法使其工作.

给出以下代码:

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

这有效:

[RegularExpression(@"^[\w\s\-\']+$")]
Run Code Online (Sandbox Code Playgroud)

但这不是:

[Name]
Run Code Online (Sandbox Code Playgroud)

我是否误解了Scott的一个方面的例子,或者是MVC不支持派生类型开箱即用的例子,所以实际上我必须创建一个相应的ModelValidator?

kim*_*3er 11

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

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(NameAttribute), typeof(RegularExpressionAttributeAdapter));
Run Code Online (Sandbox Code Playgroud)