Fluent-Validierung benutzerdefinierte Validierungsregeln

7

Ich habe ein Modell:

%Vor%

Und Validator für Modell:

%Vor%

Ich habe eine Validator Factory, die die Abhängigkeit auflösen soll:

%Vor%

Ich habe IUserService, der die Methoden IsUsernameUnique(string name) und IsEmailUnique (String-E-Mail) hat und ihn in meiner Validator-Klasse verwenden möchte (das Modell sollte nur gültig sein, wenn es einen eindeutigen Benutzernamen und eine eindeutige E-Mail-Adresse hat).

  1. Wie verwende ich meinen Service zur Validierung?
  2. ist es möglich, mehrere Regeln für reguläre Ausdrücke mit unterschiedlichen Fehlermeldungen zu registrieren? wird es auf der Client-Seite funktionieren? (Wenn nein, wie kann man dafür eine eigene Validierungslogik erstellen?)
  3. Die Validierung auf der Serverseite wird automatisch vor der Model-Pass-in-Action-Methode funktionieren, und es genügt, die ModelState.IsValid-Eigenschaft aufzurufen, oder muss ich etwas mehr tun? AKTUALISIEREN
  4. ist es möglich, auf alle Eigenschaften des Modells zuzugreifen, wenn eine Eigenschaft validiert wird? (Zum Beispiel möchte ich Password und ConfirmPassword beim Registrieren vergleichen)
Evgeny Levin 20.02.2012, 19:20
quelle

2 Antworten

21
  

1) Wie verwende ich meinen Service zur Validierung?

Sie könnten die Must -Regel verwenden:

%Vor%
  

2) Ist es möglich, mehrere Regular Expression Rules mit unterschiedlichen Fehlermeldungen zu registrieren? wird es auf der Client-Seite funktionieren? (Wenn nein, wie erstellt man dafür eine eigene Validierungslogik?)

Nein, Sie können nur einen Validierungstyp pro Eigenschaft angeben

  

Wenn nein, wie kann man eine benutzerdefinierte Validierungslogik dafür erstellen?

Sie könnten die Muss-Regel verwenden:

%Vor%
  

3) Die Validierung auf der Serverseite wird automatisch vor der Model-Pass-in-Action-Methode funktionieren, und es genügt, die ModelState.IsValid-Eigenschaft aufzurufen, oder muss ich etwas mehr tun?

Ja, absolut. Ihre Controller-Aktion könnte wie folgt aussehen:

%Vor%

UPDATE:

  

4) Ist es möglich, auf alle Eigenschaften des Modells zuzugreifen, wenn eine Eigenschaft validiert wird? (Zum Beispiel möchte ich Password und ConfirmPassword beim Registrieren vergleichen)

Ja, natürlich:

%Vor%     
Darin Dimitrov 20.02.2012, 20:15
quelle
4

Eine schönere Variante ist die Verwendung von RuleBuilderExtension :

%Vor%

So wird es einfach zu benutzen:

%Vor%     
MovGP0 16.07.2017 09:14
quelle