ViewBag, ViewData, TempData et l'État d'Affichage en MVC
http://royalarun.blogspot.in/2013/08/viewbag-viewdata-tempdata-and-view.html
ASP.NET MVC nous offre trois options ViewData, VieBag et TempData de la transmission des données de contrôleur d'affichage et dans la prochaine demande. ViewData et ViewBag sont presque similaires et TempData effectue une responsabilité supplémentaire.
Les similitudes entre le ViewBag & ViewData :
Aide à conserver les données lorsque vous déplacez d'un contrôleur de vue. Utilisé pour
transmettre des données de contrôleur à la vue correspondante. Court de la vie
la valeur devient nulle lorsque la redirection se produit. C'est parce que leur but
est de fournir un moyen de communiquer entre les contrôleurs et les vues. C'est
un mécanisme de communication au sein du serveur d'appel.
Différence entre ViewBag & ViewData:
ViewData est un dictionnaire d'objets qui est dérivée à partir de
ViewDataDictionary classe et accessibles à l'aide de chaînes de caractères comme des clés. ViewBag
est une propriété dynamique qui tire parti de la nouvelle dynamique caractéristiques
en C# 4.0. ViewData nécessite typecasting de type de données complexe et
vérifier les valeurs null pour éviter l'erreur. ViewBag ne nécessite pas de
typecasting de type de données complexe.
ViewBag & ViewData Exemple:
public ActionResult Index()
{
ViewBag.Name = "Arun Prakash";
return View();
}
public ActionResult Index()
{
ViewData["Name"] = "Arun Prakash";
return View();
}
En Vue, nous appelons, comme ci-dessous:
@ViewBag.Name
@ViewData["Name"]
TempData:
Aide à conserver les données lorsque vous vous déplacez d'un contrôleur à l'autre
contrôleur ou d'une action à une autre action. En d'autres termes lorsque vous
rediriger, "Tempdata" contribue à maintenir les données entre ces redirections.
Il utilise en interne des variables de session. TempData est censé être une très
de courte durée de l'instance, et vous ne devriez l'utiliser au cours de l'
et la suite des demandes seulement
Le seul scénario où à l'aide de TempData sera fiable de travail, c'est quand vous rediriger. C'est parce que une redirection tue à la demande actuelle (et envoie le code d'état HTTP 302 Objet s'est Déplacé vers le client), puis crée une nouvelle demande sur le serveur pour servir la redirection de vue.
Il nécessite typecasting de type de données complexe et vérifier les valeurs null pour éviter l'erreur.
public ActionResult Index()
{
var model = new Review()
{
Body = "Start",
Rating=5
};
TempData["ModelName"] = model;
return RedirectToAction("About");
}
public ActionResult About()
{
var model= TempData["ModelName"];
return View(model);
}