Ich verwende die Datenanmerkungs-Validierung ausgiebig in ASP.NET MVC 2. Diese neue Funktion hat mir viel Zeit gespart, da ich jetzt sowohl die clientseitige Validierung als auch die serverseitige Validierung an einer Stelle definieren kann. Während ich einige detaillierte Tests durchführte, erkannte ich jedoch, dass es für jemanden ziemlich einfach ist, die serverseitige Validierung zu umgehen, wenn ich mich nur auf die Datenanmerkung verlassen würde. Wenn ich beispielsweise ein erforderliches Feld durch Kommentieren der Eigenschaft mit dem Attribut [Erforderlich] definiert und ein Textfeld für dieses erforderliche Feld in einem Formular platziert hat, kann ein Benutzer das Textfeld einfach aus dem DOM entfernen (was einfach über Firebug möglich ist). und jetzt wird die Datenanmerkungsüberprüfung für diese Eigenschaft während ModelBinding innerhalb eines Controllers nicht ausgelöst. Um sicherzustellen, dass die "erforderliche" Validierung ausgelöst wird, kann ich die Validierung wiederholen, nachdem ModelBinding passiert ist, aber dann würde ich meine Validierungslogik wiederholen.ASP.NET MVC: Ist die Validierung der Datenannotation ausreichend?
Was ist die Empfehlung von allen zur Validierung? Ist die Validierung der Datenanmerkung ausreichend? Oder muss die Validierung wiederholt werden, um sicherzustellen, dass Validierungen in allen Situationen ausgelöst werden?
Follow-up-Kommentar: Basierend auf den Antworten unten, so scheint es, dass ich nicht allein auf der Modell Binder und Daten Annotation Validierung verlassen kann. Da wir zu dem Schluss kommen, dass eine zusätzliche serverseitige Validierung erforderlich ist, gibt es eine einfache Möglichkeit für meine Serviceebene, eine Validierung basierend auf den in den Datenannotationen definierten Daten auszulösen. Es scheint, dass dies uns das Beste aus beiden Wörtern bringt ... wir werden den Validierungscode nicht wiederholen müssen, aber wir werden trotzdem sicherstellen, dass die Validierung ausgeführt wird, selbst wenn Model Binder sie nicht auslöst.
Ich werde diese Follow-up-Kommentar als eine separate Frage, da es eine andere Frage stellt als die ursprüngliche Frage.
Koritnik Antwort beantwortet Ihre Follow-up-Abfrage. Ich mache meine Validierung ähnlich wie die Antwort, die er gepostet hat. Dieselbe DataAnnotation-Definition kann sowohl für die Server- als auch für die Client-Validierung verwendet werden. –
Die Validierung der Datenanmerkung ist in Ordnung, wenn die bereitgestellten Validierungsattribute und das Framework für Sie geeignet sind. Das Verhalten mit Erforderlich wurde für ASP.NET MVC 2 RTM aufgrund von Community-Feedback geändert, sodass [Erforderlich] nun wie erwartet funktioniert. Optisch, überprüfen Sie: Validierungsblock (Enterprise Library), xVal, NHibernate Validatoren (angeblich keine Abhängigkeit von NHibernate ORM). – miha
'" Ich werde diesen Follow-up-Kommentar als separate Frage veröffentlichen, da sie eine andere Frage stellt als die ursprüngliche Frage. "' Ein Link dazu wäre keine schlechte Idee, oder? – Sinjai