Frage

Ich habe mit dem ASP.NET MVC Framework herumgespielt und das Einzige, was mich wirklich verwirrt, ist, wie ich die serverseitige Validierung der geposteten Formulardaten durchführen soll.Ich gehe davon aus, dass ich nicht an dieselbe URL zurücksende. Wenn nicht, wie zeige ich dann das Formular mit den eingegebenen Daten und Fehlermeldungen erneut an?Und wohin soll die Validierungslogik gehen?Im Modell oder im Controller?Dies scheint einer der wenigen Bereiche zu sein, in denen Webformulare viel stärker sind (ich vermisse die Validierungskontrollen).

War es hilfreich?

Lösung

Vielleicht möchten Sie einen Blick auf den neuesten Beitrag von ScottGu für ASP.Net (Vorschau 5) werfen.Es geht durch ein Validierungsbeispiel, das sehr interessant ist:

http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form-posting-scenarios.aspx

Andere Tipps

Hier ist eine Übersicht über den Ablauf in MVC:

  1. /new – Rendern Sie Ihre „Neu“-Ansicht mit einem Formular, das der Benutzer ausfüllen kann
    • Der Benutzer füllt das Formular aus und es wird an /create gesendet
    • Der Beitrag wird an die Aktion „Erstellen“ auf Ihrem Controller weitergeleitet
    • Aktualisieren Sie in Ihrer Aktionsmethode das Modell mit den veröffentlichten Daten.
    • Ihr Modell sollte sich selbst validieren.
    • Ihr Controller sollte lesen, ob das Modell gültig ist.
    • Wenn das Modell gültig ist, speichern Sie es in Ihrer Datenbank.Leiten Sie zu /show um, um die Showansicht für Ihr Objekt zu rendern.
    • Wenn das Modell ungültig ist, speichern Sie die Formularwerte und Fehlermeldungen in den TempData und leiten Sie erneut zur Aktion „Neu“ weiter.Füllen Sie Ihre Formularfelder mit den Daten von TempData und zeigen Sie die Fehlermeldung(en) an.

Die Validierungsframeworks helfen Ihnen dabei.Außerdem denke ich, dass das ASP.NET MVC-Team ein Validierungsframework für die nächste Vorschau plant.

Soweit ich das beurteilen kann, versuchen alle immer noch, die „Standard“-Methode herauszufinden.Schauen Sie sich auf jeden Fall die neuesten Beiträge von Phil Haack und Scott Guthrie auf MVC an und Sie werden einige interessante Informationen darüber finden, wie sie es gemacht haben.Als ich gerade damit herumgespielt habe, habe ich einen ModelBinder für die LinqToSql-Datenklasse erstellt, die ich generiert hatte.In diesem Beitrag erfahren Sie, wie Sie einen einfachen ModelBinder zusammenstellen:

ASP.Net MVC-Modellbinder

Wenn Sie in Ihrer Aktion einen ModelBinder „Produkt“ erstellt hätten, würden Sie die Aktion einfach wie folgt deklarieren:

öffentliches ActionResult New(Produktprodukt)

Und der Modellordner kümmert sich um die Zuweisung der veröffentlichten Daten zu den Objekteigenschaften, sofern Sie ihn ohnehin richtig erstellt haben.

Danach können Sie in Ihrer GetValue()-Methode jede gewünschte Validierung implementieren, sei es mithilfe von Ausnahmen, regulären Ausdrücken oder was auch immer Sie wie folgt aufrufen können:

(ModelStateDictionary_name).AddModelError("form_element_id", "entered_value", "error_message");

Dann können Sie einfach einen <%= Html.ValidationSummary() %> in Ihre Ansicht werfen, um alle Ihre Fehler anzuzeigen.

Für die clientseitige Validierung habe ich einfach jQuery verwendet.Nachdem Sie jedoch ein grundlegendes Beispiel eingerichtet haben, können Sie einige interessante Dinge tun, indem Sie all das mit Teilansichten und Ajax-Aufrufen kombinieren.

Hast du dir das angeschaut?http://www.codeplex.com/MvcValidatorToolkit

Zitiert von der Seite

Das Validator Toolkit bietet eine Reihe von Validatoren für das neue ASP.NET-MVC-Framework, um HTML-Formulare auf dem Client und der serverseitigen Validierungssätze zu validieren.

Ich befürchte, dass jemand, der mehr MVC-Kenntnisse hat als ich, darüber sprechen müsste, wo in der Architektur man Dinge platzieren sollte.

Ich lerne auch gerade das MVC-Framework kennen, daher bin ich mir nicht sicher, wie gut das ist, aber soweit ich weiß, hätten Sie ein Formular in einer Ansicht wie Edit.aspx.Dieses Formular würde dann an den Controller an eine andere Aktionsmethode wie Update() gesendet und dabei den Inhalt des Formulars übergeben, das Sie in Edit.aspx als Parameter festgelegt haben.

Update(int id, string name, string foo)

Sie könnten die Validierung innerhalb dieser Methode durchführen.Wenn alles in Ordnung ist,

return View("Item", yourObject)

Es gibt Castle.Components.Validator Modul im Castle-Projekt.Es ist sehr wendig und kraftvoll.Es generiert Validierungsregeln basierend auf Modellattributen (oder einer anderen Quelle) und ist sogar in der Lage, eine JS-Validierung mit jQuery, Prototype Validation, fValidate und anderen zu generieren.Natürlich ist es ratsam, den Validator hinter der IValidationEngine-Schnittstelle zu abstrahieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top