2009-08-10 14 views
0

J'ai une classe de validation qui implémente IDataErrorInfo qui a toutes les méthodes que vous devez implémenter.Comment refactoriser cette validation?

One est

public string this[string columnName] 
     { 
      get 
      { 
      } 
     } 
     return ""; 

maintenant dans cette instruction switch J'ai une validation pour ma forme.

Maintenant, j'ai remarqué que beaucoup de mes formulaires ont besoin de la même chose de validation.

Alors maintenant, quand j'ai besoin d'ajouter plus de validation, je crée une nouvelle classe qui implémente "IDataErrorInfo" et ajoute la valdation supplémentaire.

Puis dans la vue je fais quelque chose comme ça

CoreValidation coreReg = new CoreValidation(); 
try 
      { 
       UpdateModel(coreReg, regForm.ToValueProvider()); 

      } 
      catch 
      { 

       return View(); 
      } 

      MoreValidation moreReg = new MoreValidation(); 

      try 
      { 
       UpdateModel(moreReg , regForm.ToValueProvider()); 

      } 
      catch 
      { 

       return View(); 
      } 

Je n'aime pas ce fait que je dois avoir 2 déclarations de captures d'essai distinctes qui pourraient poursuivre sa croissance. Si j'avais besoin de dire "core" et "More" et ajouter un peu plus de validation qui ne peut pas entrer dans l'un ou l'autre de ces je cherche un autre essai catch.

J'ai essayé d'accéder à la classe "CoreValidation" et d'extraire l'instruction switch et les propriétés et de les placer dans une nouvelle classe.

Mon plan consistait alors simplement à appeler cette classe et la méthode avec l'instruction swtich. Ainsi, dans le « Plus » classe de validation je le ferais alors je seulement dans ce

public string this[string columnName] 
     { 
      get 
      { 
       CoreValidtion(columnName); // this would contain the switch statement 

       //add another switch here with extra validation. 
      } 
     } 
     return ""; 

ont une prise d'essai et je ne serais pas double emploi avec un code puisque tout appellerait la même méthode (CoreValidation).

Mais le updateModel n'arrive pas à comprendre cela. Lorsque le UpdateModel essaie de configurer ce qu'il doit configurer, il ne peut pas trouver les méthodes de propriétés, donc toutes les propriétés comme

"UserName" sont toutes définies sur null.

Alors, comment puis-je faire ce que je veux faire?

Merci

Répondre

0

Je vous suggère de jeter un oeil à un couple de l'échantillon asp.net projet mvc, en particulier nerdinner et par exemple contactmangement pour voir comment la validation se fait dans ces exemples. Ces exemples vous donneront un guide très clair sur la validation.

J'ai eu un poste à list those sample projects ici.

Questions connexes