2010-09-06 5 views
0

Im travaillant dans l'application asp.net mvc qui a été fait dans mvc 1 ... si on fait suite à la validation de la nerd dinner 1.0 tutorialasp.net mvc 1.0 Validations

Je viens de définir une règle comme celle-

public bool Is_CellPhone(string val)   
     { 
      Regex celular = new Regex("^04[12][246][0-9]{7}$"); 
      return celular.IsMatch(val); 
     } 

et dans mes GetRuleValidations je fais

if (!Is_CellPhone(Celular)) 
        yield return new RuleViolation("El celular no cumple el formato", 

"Celular"); 

le problème est .. téléphone cellulaire n'est pas nécessaire alors quand l'utilisateur ne marche pas soumettre cette valeur la méthode de validation fonctionne de toute façon et retourne une erreur à cause de la chaîne vide ... que puis-je faire pour éviter correctement cette erreur?

Répondre

1

juste return true si la chaîne est nulle ou vide:

public bool Is_CellPhone(string val)   
     { 
      if (string.IsNullOrEmpty(val)) { return true; } 
      Regex celular = new Regex("^04[12][246][0-9]{7}$"); 
      return celular.IsMatch(val); 
     } 

Je suppose que vous pouvez également couvrir ce dans l'expression régulière, mais je sucent regex donc je ne vais pas faire semblant de donner des conseils là-bas.

+0

Je suppose que cela fonctionne, mais alors vous auriez besoin de faire cela pour chaque règle personnalisée ... ce qui est un peu inutile. Les validations de règles ne devraient être exécutées que lorsque la valeur a été soumise – ignaciofuentes