2010-07-26 12 views
1

Je crée un attribut de validation DataAnnotations pour les emails correspondants en utilisant le même modèle que jQuery (oui, cela doit avoir été fait auparavant, mais je ne le trouve pas ...) et je ne suis pas sûr de ce que je Je suis censé remplacer et si les méthodes sur les classes de base devraient être appelées ou non. À l'heure actuelle, j'ai ce implemnetation:Lors de l'implémentation d'un attribut de validation DataAnnotations, dois-je appeler 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); 

    } 
} 

Y at-il d'autres méthodes que je dois passer outre pour que cela fonctionne correctement? Dois-je appeler base.IsValid(value) comme ci-dessus, ou est-ce redondant/plat faux pour le faire?

Les commentaires sont les bienvenus.

Répondre

4

Vous n'avez pas besoin de surcharger autre chose et vous ne devez pas appeler base.IsValid.

FYI: Vous pouvez envisager d'hériter de RegularExpressionAttribute pour cela afin de récupérer les options côté client. Par exemple ...

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"; 
    } 
} 

De plus, cela peut être utile pour vous:

http://foolproof.codeplex.com/

Il est un ensemble de validateurs qui auraient dû être dans MVC. Bien fait et la source est instructive. N'a pas bougé depuis mai, espérant que c'est toujours actif.

+0

Merci beaucoup pour votre contribution! Cela a rendu les choses beaucoup plus claires. En outre, merci pour l'astuce sur l'héritage de RegularExpressionAttribute =) –