Sé qué es ViewData y lo uso todo el tiempo, pero en ASP.NET Preview 5 introdujeron algo nuevo llamado TempData.
Normalmente escribo fuertemente mi ViewData, en lugar de usar el método del diccionario de objetos.
Entonces, ¿cuándo debería usar TempData en lugar de ViewData?
¿Existen mejores prácticas para esto?
asp.net-mvc
Elijah Manor
fuente
fuente
TempData
aquí stackoverflow.com/a/17199709/2015869Respuestas:
En una frase:
TempData
son como ViewData con una diferencia: solo contienen datos entre dos solicitudes sucesivas, después de eso se destruyen. Puede utilizarTempData
para pasar mensajes de error o algo similar.Aunque desactualizado, este artículo tiene una buena descripción del
TempData
ciclo de vida.Como dijo Ben Scheirman aquí :
fuente
TempData
implicará algo potencialmente mucho más complicado (la sesión) que un simple diccionario que se pasa de un método a otroCuando una acción devuelve un resultado RedirectToAction, provoca una redirección HTTP (equivalente a Response.Redirect). Los datos se pueden conservar en la propiedad TempData (diccionario) del controlador durante una sola solicitud de redireccionamiento HTTP.
fuente
Ver datos:
ViewData
es un tipo de diccionariopublic ViewDataDictionary ViewData { get; set; }
ControllerBase
, que es el padre de laController
clase.TempData:
TempData
uso internoTempDataDictionary
:public TempDataDictionary TempData { get; set; }
TempDataDictionary
objeto:Este comportamiento es nuevo en ASP.NET MVC 2 y versiones posteriores. En versiones anteriores de ASP.NET MVC, los valores de
TempData
estaban disponibles solo hasta la siguiente solicitud.Vea la comparación de ViewData, ViewBag, TempData y Session en MVC en detalle
fuente
Encontré esta comparación útil: http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html
Un problema que encontré es que los valores TempData se borran después de que se leen de forma predeterminada. Hay opciones, consulte los métodos 'Peek' y 'Keep' en Msdn para obtener más información .
fuente
Los datos de vista se utilizan cuando queremos pasar datos del controlador a la vista correspondiente. Los datos de visualización tienen una vida muy corta, lo que significa que se destruirán cuando se produzca la redirección. Ejemplo (controlador):
try1.cshtm
TempData transfiere los datos entre controladores o entre acciones. Se usa para almacenar mensajes únicos y su vida es muy corta. Podemos usar TempData.Keep () para que esté disponible a través de todas las acciones o para que sea persistente.
Ejemplo (controlador):
TempView1.cshtm
fuente
Solo una nota al margen de TempData.
Los datos que contiene no se almacenan hasta la siguiente solicitud , sino hasta que se llama a la siguiente operación de lectura .
Ver:
TempData no se destruirá después de la segunda solicitud
fuente