2009-08-10 1 views
0

Ich habe eine Validierungsklasse, die IDataErrorInfo implementiert, die über alle Methoden verfügt, die Sie implementieren müssen.Wie kann ich diese Validierung umgestalten?

One ist

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

Jetzt in diesem Switch-Anweisung ich eine Bestätigung für meine Form haben.

Jetzt habe ich bemerkt, dass viele meiner Formulare die gleichen Validierungskram brauchen.

Also jetzt, wenn ich mehr Validierung hinzufügen muss ich eine neue Klasse, die implementiert "IDataErrorInfo" hinzufügen die zusätzliche Validierung.

Dann in der Ansicht habe ich so etwas wie diese

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

      } 
      catch 
      { 

       return View(); 
      } 

      MoreValidation moreReg = new MoreValidation(); 

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

      } 
      catch 
      { 

       return View(); 
      } 

Ich mag es einfach nicht, dass die Tatsache, ich brauche 2 separate try catch-Anweisungen haben, die weiter wachsen konnten. Wenn ich sagen musste, dass ich "Core" und "More" nehmen und weitere Validierungen hinzufügen muss, die nicht in diese beiden gehen können, dann schaue ich mir einen anderen Versuch an.

Ich habe versucht, in die "CoreValidation" -Klasse und extrahieren Sie die switch-Anweisung und die Eigenschaften und legen Sie es in eine neue Klasse.

Mein Plan war dann, nur diese Klasse und die Methode mit der swtich-Anweisung aufzurufen. So in der „Mehr“ Prüfklasse würde ich in diesem

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

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

Dann würde ich nur einen Versuch zu fangen und ich würde keinen Code werden dupliziert, da alles die gleiche Methode (CoreValidation) nennen würde.

Aber das updateModel scheint das nicht herauszufinden. Wenn das UpdateModel versucht, alles einzurichten, was es für die Einrichtung benötigt, kann es die Eigenschaftsmethoden nicht finden, so dass alle Eigenschaften wie "UserName" alle auf null gesetzt sind.

Also wie kann ich tun, was ich tun möchte?

Dank

Antwort

0

Ich würde vorschlagen, Sie auf ein paar Probe asp.net MVC-Projekt, vor allem nerdinner und contactmangement Beispiel einen Blick darauf werfen, um zu sehen, wie die Validierung in diesen Beispielen erfolgt. Diese Beispiele geben Ihnen eine sehr klare Anleitung zur Validierung.

Ich hatte einen Beitrag zu list those sample projects hier.