2010-07-26 63 views
1

我创建了一个DataAnnotations验证属性,用于匹配与jQuery使用相同模式的电子邮件(是的,它必须在之前完成,但我找不到它......),而且我不确定我究竟是在做什么应该重写以及基类中的方法是否应该被调用。目前我有这种执行:当实现DataAnnotations验证属性时,我应该调用base.IsValid()吗?

public class EmailAttribute : ValidationAttribute 
{ 
    const string emailPattern = // long regex string 
    private Regex emailRegex = new Regex(emailPattern, RegexOptions.Compiled); 

    public override bool IsValid(object value) 
    { 
     return (value is string) && 
      emailRegex.IsMatch((string)value) && 
      base.IsValid(value); 

    } 
} 

是否有任何其他方法,我需要重写这个才能正常工作?我是否应该像上面那样拨打base.IsValid(value),或者是否这样做是多余/错误的?

欢迎任何评论。

回答

4

您不需要重写其他任何内容,也不应该调用base.IsValid。

仅供参考:您可能会考虑继承RegularExpressionAttribute,以便您选择客户端选项。例如...

public class EmailAttribute : RegularExpressionAttribute 
{ 
    public EmailAttribute() : 
    base(@"^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9][email protected]((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$") 
    { 
    ErrorMessage = "Please enter a valid email address"; 
    } 
} 

此外,还可能对你有用:

http://foolproof.codeplex.com/

这是一组本来应该在MVC验证程序。做得很好,源码很有教育意义。自5月以来没有动过,希望它仍然活跃。

+0

非常感谢您的意见!这使事情变得更清楚。另外,感谢关​​于继承RegularExpressionAttribute =的提示 – 2010-07-27 06:45:09

相关问题