自定义电子邮件验证属性不起作用

时间:2012-08-23 07:28:49

标签: c# asp.net-mvc-3 validation

我正在创建自定义电子邮件验证属性,我的代码:

 public class EmailAttribute :  RegularExpressionAttribute
    {
        public EmailAttribute()
            : base("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$")
        { }
    }

现在我将此属性放在电子邮件属性中:

    [Required(ErrorMessage = "Required")]
    [Email(ErrorMessage = "Must be a valid Email")]
    public string Email { get; set; }

但这不是验证电子邮件,Required属性正常,但Email无效。有人可以解释一下为什么吗?

2 个答案:

答案 0 :(得分:1)

当您使用正则表达式调用base()时,您正在设置错误消息。尝试使用RegularExpressionAttribute作为基类或删除EmailAttribute类。

答案 1 :(得分:0)

服务器端验证应该可以正常工作。我认为您正在讨论客户端验证,因此您必须在自定义电子邮件属性中使用IClientValidatable接口,并且还必须创建jquery适配器。

您可以看到示例here