Wie leitet man mit dem POST-Verb auf eine Seite um?
Beim Aufruf RedirectToAction
in einem controller, es leitet automatisch mit einem HTTP-GET. Wie kann ich explizit sagen, dass ein HTTP-POST?
Habe ich eine Aktion akzeptiert, dass die beiden GET-und POST-requests, und ich möchte in der Lage sein, um RedirectToAction
mit POST und senden es einige Werte.
Wie diese:
this.RedirectToAction(
"actionname",
new RouteValueDictionary(new { someValue = 2, anotherValue = "text" })
);
Möchte ich die someValue
und anotherValue
Werte gesendet werden, mittels HTTP POST anstelle von GET. Weiß jemand, wie dies zu tun?
InformationsquelleAutor der Frage Chris Pietschmann | 2008-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
HTTP unterstützt keine Umleitung zu einer Seite mit POST. Wenn Sie umleiten, irgendwo, die HTTP "Location" - header teilt dem browser mit, wohin Sie gehen, und der browser eine GET-Anforderung für die Seite. Sie werden wahrscheinlich haben, schreiben Sie einfach den code für deine Seite zu akzeptieren, GET-Anfragen und POST-Anfragen.
InformationsquelleAutor der Antwort Eli Courtwright
Für Ihre speziellen Beispiel, ich würde das einfach machen, da Sie offensichtlich kümmern sich nicht um tatsächlich mit dem browser Holen Sie sich die Umleitung sowieso (aufgrund der Annahme der Antwort, die Sie bereits akzeptiert haben):
Funktioniert einfach und es gibt keine funny business wirklich geht - dies ermöglicht Ihnen, pflegen die Tatsache, dass der zweite wirklich akzeptiert nur HTTP-POST-Anfragen (außer in diesem Fall, die unter Ihrer Kontrolle ist, sowieso) und Sie müssen nicht auf TempData entweder, das ist, was der link, den Sie geschrieben, in Ihrer Antwort suggeriert.
Ich würde gerne wissen, was ist "falsch" mit dieser, wenn es etwas gibt. Natürlich, wenn Sie wirklich geschickt haben, um dem browser einen redirect, das ist nicht zur Arbeit zu gehen, aber dann sollten Sie sich Fragen, warum würden Sie versuchen, zu konvertieren, egal, da scheint es seltsam für mich.
Hoffe, das hilft.
InformationsquelleAutor der Antwort Jason Bunting
Wenn Sie möchten, übergeben von Daten zwischen zwei Handlungen, während einer Umleitung, ohne zu zählen alle Daten in der Abfrage-string, legen Sie das Modell in den TempData-Objekt.
AKTION
TempData["datacontainer"] = modelData;
ANSICHT
TempData soll eine sehr kurzlebige-Instanz, und Sie sollten es nur verwenden, während die aktuelle und die nachfolgenden Anforderungen nur! Da TempData funktioniert auf diese Weise, müssen Sie wissen, für sicher, was der nächste Auftrag sein wird, und die Umleitung zu einer anderen Ansicht ist die einzige Zeit, die Sie dies garantieren können.
Daher ist das einzige Szenario, wo mit TempData zuverlässig arbeiten, wenn Sie umleiten.
InformationsquelleAutor der Antwort Otto Kanellis
versuchen, diese
InformationsquelleAutor der Antwort vicky
Antwort-posting von jason wird in den meisten Szenarien, das einzige problem, das ich sehe, ist, dass es unfallträchtig ist. d.h. der Aufruf einer action-Methode direkt umgeht alle Filter angewendet, um die Aktion. Also , in Fall gibt es keine Authentifizierung, oder gegen den Art-filter angewendet, um die action-Methode, dass Daten verloren gehen könnten. Aufruf einer action-Methode direkt funktioniert, aber es sollte mit Vorsicht angewendet werden.
InformationsquelleAutor der Antwort amarnath chatterjee
Möchte ich erweitern, die Antwort von Jason Bunting
wie diese
Und Eli wird hier für etwas Idee auf, wie man es generische variable
Können alle Arten von controller
InformationsquelleAutor der Antwort Yitzhak Weinberg