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?
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.
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.
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
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.
Tags und Links asp.net-mvc c# attributes asp.net-mvc-2 validation