Ich arbeite an einer ASP.NET MVC 3-Webanwendung, wo ich TempData verwenden, um ein Modellobjekt in dem Szenario zu speichern, in dem der Benutzer nicht angemeldet ist.
Hier ist der Ablauf:
Nach Schritt 3 hätte ich gedacht, TempData würde gelöscht werden?
Hier ist der Code:
%Vor%Ich habe diesen Artikel gefunden, der besagt:
Nun, indem Sie es mit TempData["xxx"]
lesen, ist das nicht ein "Lesen" und daher sollten sie zum Entfernen markiert werden?
Und der letzte betrifft mich etwas - da ich nach dem POST eine Umleitung mache (P-R-G). Aber das kann nicht vermieden werden.
Gibt es eine Möglichkeit, dass ich sage "trenne diesen Gegenstand". TempData.Entfernen? Oder mache ich das falsch?
Hier sind 2 GET HTTP-Anfragen beteiligt:
In Ihrem Szenario ist keine POST-Anfrage enthalten. Die Tatsache, dass Sie von Ihrer GET Foo-Aktion die POST Foo-Aktion aufrufen, bedeutet nicht, dass eine separate Anforderung ausgeführt wird (Sie befinden sich immer noch im Kontext der anfänglichen GET-Anforderung). Es ist nur ein C # -Methodenaufruf, keine separate Anfrage.
Sie speichern während der ersten Anfrage etwas in TempData, und dieses TempData steht für das zweite zur Verfügung. Es wird also in der Controller-Aktion verfügbar sein, die die Anmeldeseite rendert.
Daher müssen Sie in TempData in Aktion lesen, indem Sie die Anmeldeseite rendern, wenn TempData entfernt werden soll.
Nachfolgend sind einige der wichtigsten Punkte aufgeführt, die bei der Verwendung von Temp-Daten zu beachten sind.
1) Bei einem Lesezugriff auf temporäre Daten werden Elemente nicht sofort aus dem Wörterbuch entfernt, sondern nur zum Löschen.
2) Temporäre Daten entfernen nicht immer das Element, auf das zugegriffen wurde. Es entfernt nur das Element, wenn eine Aktion zu einem HTTP-200-Statuscode führt (ViewResult / JsonResult / ContentResult usw.).
3) Im Falle von Aktionen, die zu einer Http 302 führen (wie etwa bei Umleitungsaktionen), werden die Daten auch dann gespeichert, wenn auf sie zugegriffen wird.
Tags und Links asp.net-mvc asp.net-mvc-3 c# tempdata