2012-04-03 6 views
3

Ich habe gelesen, dass TempData durch Sitzung in Asp.Net MVC unterstützt wird, aber nur gültig für die Dauer der aktuellen Anfrage. Dies macht es für Redirect2Action usw. geeignet. Da es nur für die aktuelle Anfrage gültig ist, bedeutet das, dass Sie keine Probleme mit Load Balancer und Session auf WebFarms bekommen. Grundsätzlich, weil Sie nur auf einem Webserver pro Anfrage sind.Warum TempData von Sitzung unterstützt

Wäre es eine Option, es stattdessen durch die Request.Items-Sammlung zu sichern?

Antwort

4

TempData ist nur für den aktuellen und next request gültig, weshalb es im Sitzungszustand gespeichert wird. Das Speichern mit der Anfrage würde nicht funktionieren.

Alle Einschränkungen, die das Speichern von Elementen im Sitzungsstatus (z. B. Lastbilanzen) beeinträchtigen würden, führen ebenfalls zum Abbruch von TempData.

finden Sie in der Dokumentation für TempDataDictionary

Sie ein TempDataDictionary-Objekt verwenden, können die Daten auf die gleiche Weise , dass Sie ein Objekt verwenden Viewdatadictionary zu übergeben. Die Daten in einem TempDataDictionary-Objekt bestehen jedoch nur von einer Anforderung an die nächste, , es sei denn, Sie markieren einen oder mehrere Schlüssel für die Beibehaltung mithilfe der Keep Methode. Wenn ein Schlüssel für die Aufbewahrung markiert ist, wird der Schlüssel für die nächste Anforderung beibehalten.

Eine typische Verwendung für ein TempDataDictionary-Objekt besteht darin, Daten von einer Aktionsmethode zu übergeben, wenn es zu einer anderen Aktionsmethode umleitet. Beispiel: Eine Aktionsmethode kann Informationen über einen Fehler in der TempData-Eigenschaft des Controllers speichern (der ein TempDataDictionary-Objekt zurückgibt), bevor die RedirectToAction-Methode aufgerufen wird. Die nächste Aktion Methode kann dann den Fehler behandeln und eine Sicht rendern, die eine Fehlermeldung anzeigt.

+2

Tatsächlich wird TempData ab MVC2 beibehalten, bis das nächste Mal auf den Schlüssel zugegriffen wird, was die nächste Anfrage oder 10 Anfragen nach unten sein könnte. http://blog.donnfelker.com/2010/02/26/aspnet-mvc2-tempdata-now-persists/ –

Verwandte Themen