Je sais ce qu'est ViewData et je l'utilise tout le temps, mais dans ASP.NET Preview 5, ils ont introduit quelque chose de nouveau appelé TempData.
Normalement, je tape fortement mon ViewData, au lieu d'utiliser l'approche du dictionnaire des objets.
Alors, quand dois-je utiliser TempData au lieu de ViewData?
Existe-t-il des meilleures pratiques pour cela?
asp.net-mvc
Manoir Elijah
la source
la source
TempData
ici stackoverflow.com/a/17199709/2015869Réponses:
En une phrase:
TempData
sont comme ViewData avec une différence: ils ne contiennent des données qu'entre deux requêtes successives, après quoi ils sont détruits. Vous pouvez utiliserTempData
pour transmettre des messages d'erreur ou quelque chose de similaire.Bien que obsolète, cet article présente une bonne description du
TempData
cycle de vie.Comme Ben Scheirman l'a dit ici :
la source
TempData
cela impliquera quelque chose de potentiellement beaucoup plus compliqué (la session) qu'un simple dictionnaire transmis de méthode en méthodeLorsqu'une action renvoie un résultat RedirectToAction, elle provoque une redirection HTTP (équivalente à Response.Redirect). Les données peuvent être conservées dans la propriété TempData (dictionnaire) du contrôleur pour la durée d'une seule demande de redirection HTTP.
la source
Afficher les données:
ViewData
est un type de dictionnairepublic ViewDataDictionary ViewData { get; set; }
ControllerBase
, qui est le parent de laController
classeTempData:
TempData
utilisation en interneTempDataDictionary
:public TempDataDictionary TempData { get; set; }
TempDataDictionary
objet:Ce comportement est nouveau à partir d'ASP.NET MVC 2 et des dernières versions. Dans les versions antérieures d'ASP.NET MVC, les valeurs de
TempData
n'étaient disponibles que jusqu'à la demande suivante.Voir la comparaison de ViewData, ViewBag, TempData et Session dans MVC en détail
la source
J'ai trouvé cette comparaison utile: http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html
Un problème que j'ai rencontré est que les valeurs TempData sont effacées après avoir été lues par défaut. Il existe des options, voir les méthodes «Peek» et «Keep» sur Msdn pour plus d'informations .
la source
view data est utilisé lorsque nous voulons transmettre des données du contrôleur à la vue correspondante. les données d'affichage ont une durée de vie très courte, cela signifie qu'elles seront détruites lors de la redirection. Exemple (contrôleur):
try1.cshtm
TempData transfère les données entre les contrôleurs ou entre les actions. Il est utilisé pour stocker des messages uniques et sa durée de vie est très courte.Nous pouvons utiliser TempData.Keep () pour le rendre disponible à travers toutes les actions ou pour le rendre persistant.
Exemple (contrôleur):
TempView1.cshtm
la source
Juste un petit mot à TempData.
Les données qu'il contient ne sont pas stockées jusqu'à la requête suivante , mais jusqu'à ce que la prochaine opération de lecture soit appelée!
Voir:
TempData ne sera pas détruit après la deuxième requête
la source