MVC3 CompareAttribute, clientseitiger Fehler

8

Ich verwende MVC3 und möchte LogIn-Formular und Registrierungsformular auf derselben Seite haben. Um das zu erreichen, habe ich LogInRegisterViewModel wie folgt erstellt:

%Vor%

Es gibt mir, was ich will (zwei Formen auf dem gleichen Bildschirm) und die Daten an die richtigen Controller sendet und zurückgibt und Fehler für Formulare (falls vorhanden) anzeigt. Das einzige Problem, das ich habe, ist mit CompareAttribute, das ich oben ConfirmPassword Eigenschaft in meinem RegisterViewModel habe:

%Vor%

Clientseitig sind die Passwörter niemals gleich (~ Ich bekomme immer einen Validierungsfehler von Compare mit einer Nachricht, die mir sagt, dass sie nicht gleich sind), selbst wenn sie (ich bin mir sicher). HTML im Browser ist:

%Vor%

Ich habe das Gefühl, dass es um dieses Attribut geht:     data-val-gleich-anders="*. Passwort"

CompareAttribute funktioniert gut, wenn ich RegisterViewModel direkt benutze. Jeder ist schon mal hier reingekommen? Ist es ein Fehler oder mache ich etwas falsch? Wie mache ich Vergleiche zur Arbeit in meinem Fall?

    
Michal B. 04.12.2011, 15:31
quelle

2 Antworten

15

Es sollte mit dem [Compare("Password", ErrorMessage = "Passwords do not match.")] -Attribut funktionieren, aber es scheint wirklich ein Fehler in der jquery.validate.unobtrusive.js Datei zu sein. Das Problem ist in diesem Code:

%Vor%

Es versucht also, das andere Steuerelement mit der JQuery-Suchmethode zu finden. Aber die "." dot -Zeichen ist in der fullOtherName -Variable nicht maskiert (in Ihrem Fall wird es enthalten: "Register.Password" ) wie in diesem SO Frage . Das ist der Grund, warum es funktioniert, wenn Sie RegisterViewModel nur direkt verwenden, denn dann gibt es keine Punkte in den Namen.

Um es zu beheben, müssen Sie der appendModelPrefix-Funktion eine Zeile hinzufügen:

%Vor%     
nemesv 04.12.2011, 16:20
quelle
0

Sehr gute Antwort, nemesv.

Nur eine Sache für Neulinge hinzuzufügen:

%Vor%

wird

%Vor%

in .min.js

Andernfalls kommt der Fehler beim Veröffentlichen zurück.

    
Sabin Simionescu 01.02.2014 23:00
quelle