我想为 MVC2 的电子邮件地址创建一个自定义验证属性,该属性不是从 RegularExpressionAttribute 继承,但可以在客户端验证中使用。有人能指出我正确的方向吗?
我尝试了这样简单的事情:
[AttributeUsage( AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false )]
public class EmailAddressAttribute : RegularExpressionAttribute
{
public EmailAddressAttribute( )
: base( Validation.EmailAddressRegex ) { }
}
但它似乎对客户不起作用。但是,如果我使用 RegularExpression(Validation.EmailAddressRegex)] 它似乎工作正常。
您需要为新属性注册适配器才能启用客户端验证。
由于RegularExpressionAttribute已经有一个适配器,即RegularExpressionAttribute Adapter,因此您所要做的就是重用它。
使用静态构造函数将所有必要的代码保留在同一个类中。
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class EmailAddressAttribute : RegularExpressionAttribute
{
private const string pattern = @"^\w+([-+.]*[\w-]+)*@(\w+([-.]?\w+)){1,}\.\w{2,4}$";
static EmailAddressAttribute()
{
// necessary to enable client side validation
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAddressAttribute), typeof(RegularExpressionAttributeAdapter));
}
public EmailAddressAttribute() : base(pattern)
{
}
}
有关更多信息,请查看这篇文章,解释完整的过程。http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)