2016-04-14 10 views
2

Ich validiere Eingabewerte mit FluentValidation. Ich benutze eine Methode, um Wert von der Datenbank zu validieren, die den Ganzzahlwert -1, -2 und -3 für verschiedene Fehlermeldungen auf der Basis des Wertes zurückgibt. Wie kann ich Fehlermeldung entsprechend dem Rückgabewert von Methode anzeigen. Ich habe eine Variable im Klassenbereich erstellt und den Rückgabewert gesetzt und in der nächsten Anweisung habe ich einen Vergleich versucht und versucht, die Nachricht anzuzeigen, aber ich beobachte, dass die nächste Anweisung vor dem Aktualisierungswert ausgeführt wird.FluentValidation Mehrere Fehlermeldungen für eine Eigenschaft

Ich möchte verschiedene Fehlermeldungen für einen Eingangswert anzeigen.

zum Beispiel Benutzereingabe eine negative Wert Fehlermeldung sollte "negative Werte sind nicht erlaubt", wenn Benutzer eine große Wertnummer eingeben, dann sollte die Nachricht "Nummer ist zu lang" sein.

Hier ist der Code ISValidAction ist eine Methode, die die Eingabe validiert und die Variable returnvalue setzt diese Methode gibt immer true zurück.

int returnvalue = 0; 
RuleFor(r => r.action).Must(ISValidAction).WithMessage("Action does not exist in the system.").When(r => !String.IsNullOrEmpty(r.action)); 

RuleFor(r => returnvalue).Must(r => !(returnvalue != 1 && returnvalue != -2 && returnvalue != -3)).WithMessage("");//for -1 
     RuleFor(r => returnvalue).Must(r => !(returnvalue != 1 && returnvalue != -1 && returnvalue != -3)).WithMessage("");//for -2 
     RuleFor(r => returnvalue).Must(r => !(returnvalue != 1 && returnvalue != -1 && returnvalue != -2)).WithMessage("");// for -3 

Antwort

6

ich habe die Lösung! um mehrere Fehler gegen einen Wert anzuzeigen.

i Fehlermeldungen gerade hinzugefügt haben in PropertyValidatorContext

RuleFor(r => r.action).Must(ActionRateLimit).When(r => !String.IsNullOrEmpty(r.action)); 

ist dieser Aufruf zur Validierung einer Funktion.

hier ist Methode.

private bool ActionRateLimit(LogActionInput obj, string actionName, PropertyValidatorContext context) 
     { 
     int result = 0; 
     IRecognitionStoreService StoreService = new RecognitionStoreService(); 
     result = StoreService.ActionRateLimit(actionName, obj.userName);    
     if (result==1) 
     { 
      return true; 
     } 
     else if (result==0) 
     { 
      context.MessageFormatter.AppendArgument("ValidationMessage","Invalid action name or the user doesn't exists."); 
     } 
     else if(result==-1) 
     { 
      context.MessageFormatter.AppendArgument("ValidationMessage", "Action exceeds its rate limit. Please try again in a while."); 
     } 
     else if (result == -3) 
     { 
      context.MessageFormatter.AppendArgument("ValidationMessage", "This user has not completed the prequisite challenge. Action logging failed."); 
     } 
     return false; 

     } 

    } 

es funktioniert gut.

+0

Ich weiß nicht, warum ich den Fehler bekomme: Kann nicht von 'Methodengruppe' in 'Func ' –

+0

konvertieren An welchem ​​Punkt? –

+1

Muss .WithMessage ("{ValidationMessage}") nach Must() hinzufügen, damit es funktioniert – serg

Verwandte Themen