2010-07-26 86 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

相關問題