ASP MVC: Benutzerdefiniertes Validierungsattribut

7

Ich versuche, mein eigenes Attribut für die benutzerdefinierte Validierung zu schreiben, aber ich habe einige Probleme.

Das Attribut, das ich schreiben möchte, ist, dass wenn ein Benutzer sich anmeldet, das Passwort mit dem Bestätigungs-Passwort verglichen wird.

%Vor%

Jetzt ist mein Problem, wenn ich versuche, das Attribut so in der Modelldatei zu setzen:

%Vor%

Ich erhalte den folgenden Fehler:

  

Fehler 1 Ein Objektverweis wird für das nicht statische Feld, Methode,   oder Eigenschaft 'Project.Data.Models.GebruikerRegistreerModel.ConfirmPassword.get'

Es scheint, dass VS das confirmpassword im PasswordToCompareWith=ConfirmPassword -Teil nicht akzeptiert.

Was mache ich falsch?

    
Carrie Kendall 27.04.2010, 11:34
quelle

7 Antworten

4

Es tut uns leid, Sie enttäuschen zu müssen, aber die Handhabung eines so einfachen Falles wie der Verwendung von Datenanmerkungen könnte Ihnen Schmerzen bereiten. Sie können sich diesen Beitrag ansehen.

    
Darin Dimitrov 27.04.2010, 11:38
quelle
18

Nach diesem Link Ссылка Es gibt jetzt ein spezielles Validierungsattribut in MVC3:

%Vor%
  

CompareAttribute ist ein neuer, sehr nützlicher Validierer, der nicht wirklich existiert   Teil von   System.ComponentModel.DataAnnotations,   aber wurde dem hinzugefügt   System.Web.Mvc DLL vom Team. Während   nicht besonders gut benannt (der einzige   Vergleich es macht, ist zu überprüfen   Gleichheit, so wäre vielleicht EqualTo   offensichtlicher), ist es leicht zu sehen   die Verwendung, die dieser Validator überprüft   dass der Wert einer Eigenschaft gleich ist   der Wert einer anderen Eigenschaft. Sie können   sehen Sie aus dem Code, dass das Attribut   nimmt eine Zeichenketteneigenschaft an, die ist   der Name der anderen Eigenschaft, die   du vergleichst. Der klassische Gebrauch   von dieser Art von Validierer sind wir   benutze es für hier: Passwort   Bestätigung.

    
orcy 23.05.2011 04:25
quelle
2

Ich weiß nicht, warum das so groß ist, machen Sie das einfach:

%Vor%

Jetzt müssen Sie nur noch [ComparePassword] zu Ihrer Passwort-Eigenschaft hinzufügen, nichts zu übergeben ... einfach und ziemlich sauber

    
Serj Sagan 15.07.2013 17:50
quelle
1

FoolProof Ссылка scheint die beste Lösung zu sein.

%Vor%

Es ist besser als das vorgeschlagene PropertiesMustMatchAttribute, da es den Validierungsfehler für das "RetypePassword" anstelle der globalen Modellebene wie PropertiesMustMatchAttribute hinzufügt.

    
orcy 21.05.2011 13:15
quelle
0

Sie können keinen Referenztyp an ein Attribut übergeben, es sei denn, Sie machen einen eher lahmen Reflexionscode.

In diesem Fall würde ich denken, dass das Erstellen eines benutzerdefinierten Modellbinders eine bessere Idee wäre, und dann das Kennwort und das ComparePassword zu diesem Zeitpunkt überprüfen.

    
Tejs 27.04.2010 11:41
quelle
0

Sie brauchen eine STATIC Methode in Ihrem Fall: BEISPIEL:

%Vor%     
user3618238 08.05.2014 21:07
quelle
0

nur als ein Beispiel:

%Vor%

Quelle: Ссылка

    
d689p 07.10.2014 10:36
quelle