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?
答案 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