Ich weiß, was ViewData ist und benutze es ständig, aber in ASP.NET Preview 5 wurde etwas Neues namens TempData eingeführt.
Normalerweise tippe ich meine ViewData stark ein, anstatt den Ansatz des Objektwörterbuchs zu verwenden.
Wann sollte ich TempData anstelle von ViewData verwenden?
Gibt es dafür Best Practices?
asp.net-mvc
Elijah Manor
quelle
quelle
TempData
hier etwas hinzufügen stackoverflow.com/a/17199709/2015869Antworten:
In einem Satz:
TempData
sind wie ViewData mit einem Unterschied: Sie enthalten nur Daten zwischen zwei aufeinanderfolgenden Anforderungen, danach werden sie zerstört. Sie könnenTempData
damit Fehlermeldungen oder ähnliches übergeben.Obwohl veraltet, enthält dieser Artikel eine gute Beschreibung des
TempData
Lebenszyklus.Wie Ben Scheirman hier sagte :
quelle
TempData
es sich um etwas handelt, das möglicherweise viel komplizierter ist (die Sitzung) als ein einfaches Wörterbuch, das von Methode zu Methode weitergegeben wirdWenn eine Aktion ein RedirectToAction-Ergebnis zurückgibt, verursacht sie eine HTTP-Umleitung (entspricht Response.Redirect). Daten können in der TempData-Eigenschaft (Wörterbuch) des Controllers für die Dauer einer einzelnen HTTP-Umleitungsanforderung gespeichert werden.
quelle
Daten anzeigen:
ViewData
ist ein Wörterbuchtyppublic ViewDataDictionary ViewData { get; set; }
ControllerBase
, die das Elternteil derController
Klasse istTempData:
TempData
intern verwendenTempDataDictionary
:public TempDataDictionary TempData { get; set; }
TempDataDictionary
Objekt gespeichert sind :Dieses Verhalten ist neu in ASP.NET MVC 2 und späteren Versionen. In früheren Versionen von ASP.NET MVC waren die Werte in
TempData
nur bis zur nächsten Anforderung verfügbar.Sehen Sie sich den Vergleich von ViewData, ViewBag, TempData und Session in MVC im Detail an
quelle
Ich fand diesen Vergleich nützlich: http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html
Ein Problem, auf das ich gestoßen bin, ist, dass TempData-Werte gelöscht werden, nachdem sie standardmäßig gelesen wurden. Es gibt Optionen. Weitere Informationen finden Sie unter Methoden 'Peek' und 'Keep' auf Msdn .
quelle
Ansichtsdaten werden verwendet, wenn Daten vom Controller an die entsprechende Ansicht übergeben werden sollen. Anzeigen von Daten haben eine sehr kurze Lebensdauer. Dies bedeutet, dass sie bei einer Umleitung zerstört werden. Beispiel (Controller):
try1.cshtm
TempData überträgt die Daten zwischen Controllern oder zwischen Aktionen. Es wird zum Speichern von einmaligen Nachrichten verwendet und hat eine sehr kurze Lebensdauer. Wir können TempData.Keep () verwenden, um es für alle Aktionen verfügbar zu machen oder um es dauerhaft zu machen.
Beispiel (Controller):
TempView1.cshtm
quelle
Nur eine Randnotiz zu TempData.
Die darin gespeicherten Daten werden erst bei der nächsten Anforderung gespeichert , sondern bis der nächste Lesevorgang aufgerufen wird!
Siehe:
TempData wird nach der zweiten Anforderung nicht zerstört
quelle