asp.net mvc 3 - update - Cuándo usar ViewBag, ViewData o TempData en Mvc3
mvc 4+ (2)
Cuándo usar ViewBag, ViewData o TempData en vista. En el controlador quiero enviar un objeto a la vista. Quiero saber qué será lo mejor en este caso. Quiero el objeto en la página de vista.
En mi humilde opinión para prácticas de diseño decente -
ViewBag = nunca. ViewData = nunca. Estos son campos mágicos basados en string-ish y tampoco se pueden capturar durante instancias de tiempo de compilación.
Su VieWModel debe contener todo lo que necesita. Ese es su propósito en la vida. No despojes de su propósito. TempData solo para mensajes de estado u objeto que no desea almacenar en caché pero que no está disponible para la siguiente solicitud.
Use TempData cuando necesite que los datos estén disponibles para la próxima solicitud, únicamente.
TempData["myInfo"] = "my info";
Luego, en la siguiente solicitud, estará allí ... pero se habrá ido después de eso.
Utilice ViewBag para que la mayoría de sus datos adicionales pasen a su vista, más allá del @model
ViewBag.MyInfo = "my info";
Luego accede desde tu vista.
Use ViewData para acceder / ingresar la misma información exacta que ViewBag, excepto como una colección en lugar de propiedades de un objeto dinámico.
ViewData["MyInfo"]
accede exactamente a los mismos datos que ViewBag.MyInfo
Tenga en cuenta que he usado cadenas, pero estas pueden almacenar cualquier objeto que desee.
Otra cosa a tener en cuenta: TempData y ViewData son ambos diccionarios que almacenan valores de objeto, por lo que debe convertirlos a su tipo original cuando los utilice. ViewBag, sin embargo, utiliza dinámica, y no siempre es necesario que lances, ya que se realiza en tiempo de ejecución. Sin embargo, algunos métodos (como los métodos de extensión) no pueden manejar dinámicos, por lo que tendría que emitir esos casos.