Frage

I AjaxSubmit bin mit einem Formular zu schreiben und es gibt Serverseite Validierungen mit XWert (RuleException Art und Weise) getan. Ich benutze nicht die try / catch Art und Weise Fehler zu Modell hinzufügen und dann auf Ansicht senden. Stattdessen - ich möchte das Handle attibute verwenden und in der OnException Ich füge die Fehler zu Modell. Das große Problem ist, wie kann ich diese Fehler als Ergebnisse in dem Ajax-Aufruf bekommen?

War es hilfreich?

Lösung

Es gibt nicht eine große Lösung in gerade gebaut. Dadurch erfordert korrekt eine clientseitige Validation Framework (weil die Fehler angezeigt werden, müssen Sie die HTML-Seite dynamisch ändern), und bis vor kurzem hat ASP.NET MVC, dass nicht hatte. Allerdings Validierung ASP.NET MVC 2 Preview 2 eingeführt Client-Seite, so dass es sinnvoll ist, dass etwas vermuten könnte bald in den Rahmen eingebaut werden.

In der Zwischenzeit jedoch HandleErrorAttribute wird dir nicht helfen. HandleErrorAttribute nur weiß, wie man eine Fehlerseite umgeleitet werden, die in der Regel nicht, was Sie als Antwort auf einen serverseitige Validierung Fehler machen wollen sogar mit einer „normalen“ POST, und schon gar nicht mit einer AJAX-Post.

Es gibt wirklich zwei verschiedene Szenarien, die Sie behandeln müssen:

  1. Validierungsfehler sind nicht katastrophale Ausfälle; sie sind einfach schlecht Benutzerdaten, die Sie erwarten. Sie müssen nur die Informationen zurück auf die Seite zu bekommen, so dass die Seite markiert werden kann, den Benutzer zu sagen, wie ihre Daten zu beheben.
  2. Sie müssen auch katastrophale Ausfälle zu handhaben, wie unvorhergesehene Ausnahmen. Dies ist vergleichbar mit dem, was HandleErrorAttribute tut, sofern Sie eine Nachricht an einen Benutzer anzeigen können, aber man kann nicht unbedingt, dass die Nachricht mit bestimmten Bereichen auf Ihrer Seite übereinstimmen.

Um das erste Szenario Fehler zu behandeln, müssen Sie den Modellzustand nach oben in ein Objekt wickeln, die in JavaScript-Code parsable sein wird; JSON ist der offensichtliche Sitz hier. Anschließend müssen Sie JavaScript-Code auf der Client-Seite haben, die diese Aufgabe und Markierungen auf die Formularfelder analysiert. Dies ist einfacher, wenn Sie in einen bestehenden clientseitige Validierung Rahmen binden, die bereits Code enthalten für Formularfelder markiert werden.

Um die zweite Art von Fehlern zu behandeln, können Sie HandleErrorAttribute um JSON zu schaffen anstelle von HTML im Fall eines katastrophalen Fehlers verlängern. Auch hier müssen Sie JavaScript-Code schreiben, die im Falle eines Fehlers ausgeführt werden - global ajaxError Veranstaltung jQuery ist hier nützlich -, dass die Informationen dieser strukturierten Fehler erkennen Sie erstellt haben und eine Art nützliche Nachricht für den Benutzer anzeigen .

Wenn alles klingt ein wenig beteiligt, na ja, es ist, weshalb es kann mehr Sinn machen, zu warten und sehen, was built-in wird, wenn MVC 2 wird schließlich freigegeben.

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