Wie behalte ich ModelState-Fehler bei der Verwendung von RedirectToAction?
Ich habe einige code, der spart ein ticket in unserem system. Wenn es einen Fehler macht RedirectToAction. Das problem ist, dass ich nicht scheinen, um meine Fehler in der neuen Aktion. Wie kann ich dieses Problem beheben?
ModelState.AddModelError("_FORM", "Unable to save ticket");
ModelState.AddModelError("_FORM", "Phone number was invalid.");
ModelState.AddModelError("_FORM", "Lane number is required.");
return RedirectToAction("CreateStep", "Ticket");
Ich weiß, einige haben vorgeschlagen, TempData, aber wie bekomme ich die einzelnen Fehler aus der ModelState?
Dank.
InformationsquelleAutor der Frage Mike Roosa | 2009-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
PRG pattern ist ok, aber ich habe dieses:
Basis-controller:
Aktion (ich bin mit xVal):
Die Aktion eine Ausnahme wirft, ergänzt der ModelState zu TempData und leitet zurück auf die referrer. Da die Aktion gefangen ist, OnActionExecuted wird weiterhin ausgeführt, aber das erste mal rund um den ModelState ist das gleiche wie TempData["ModelState"], so dass Sie nicht wollen, zu verschmelzen mit sich selbst. Wenn der redirect action ausgeführt wird, OnActionExecuted feuert wieder. Dieses mal, wenn es etwas gibt, in TempData["ModelState"], es verschmilzt mit dieser Aktion ModelState.
Könnte man es erweitern auf mehrere Modelle durch die Verwendung von TempData["ModelState.user"] = ModelState und dann verschmelzen alle TempData-Objekt, das beginnt mit ModelState.
InformationsquelleAutor der Antwort
Ich weiß, dieser thread ist alt, aber dieses blog über ASP.NET Best Practices hat einige gute Vorschläge.
#13 auf der Seite befasst sich mit der Verwendung von 2-Action-Filter zum speichern und wiederherstellen von
ModelState
zwischen umleitet.Dies ist das Muster, dass meine Arbeit verwendet, und ich Liebe es.
Hier das vereinfachte Beispiel:
InformationsquelleAutor der Antwort Scott Rippey
dieser blog-post beschreibt, wie man sich die Umsetzung der PRG-Pattern im MVC
http://blog.simonlovely.com/archive/2008/11/26/post-redirect-get-pattern-in-mvc.aspx
hth
InformationsquelleAutor der Antwort marc.d
Verwenden Sie den TempData[] Sammlung
Den tempdata gespeichert ist, von einer Anforderung zur nächsten, dann ist es vorbei.
InformationsquelleAutor der Antwort AndreasN
Was ich habe zu halten mein ModelState, egal, wo ich mit leitet ist die folgende:
In Ihrem Modell hinzufügen:
In Ihrem Modell Konstruktor hinzufügen:
Beispiel-Post mit meinem Modell, das sogenannte Modelle.Kontaktdaten:
So, jetzt Ihr tempdata hat Ihr Modell und modelstate.
Das folgende ist meine Ansicht, die nicht wissen, der Zustand des nichts, es sei denn, es hat etwas. Hier ist der code:
InformationsquelleAutor der Antwort Rudy Hinojosa
Ich glaube, Sie verlieren Ihre Modell-Zustand, wenn Sie tun eine Umleitung. Vielleicht könnten Sie schreiben Sie Ihre Logik, um so etwas wie:
Und der übliche Weg, um Ihre Fehlermeldung:
InformationsquelleAutor der Antwort Thomas Eyde