ASP.NET MVC: ViewData, ViewBag y TempData

Leyendo este excelente post sobre algunas características que provee ASP.NET MVC encontré un punto que me pareció interesante volver a recordar.

El mismo trata sobre las diferencias entre ViewData, ViewBag y TempData. Como ya saben cada una de estas opciones nos proveen la posibilidad de enviar información desde el controlador a la vista. Sin embargo algunos de ellos nos permiten hacer de forma directa y otros por medio de re-direcciones.

Empecemos por los dos primeros. Tanto ViewData como ViewBag (de los cuales ya hemos hablado en detalle aquí) nos permiten compartir información desde el controlador a la vista de forma directa y del lado del servidor. En caso de que ocurriera una re-dirección el valor del mismo pasaría a ser nulo. La diferencia principal entre ambos es que ViewData es un objeto diccionario mientras que ViewBag es una propiedad dinámica (el cual nos genera un código mucho más prolijo y sencillo de mantener).

TempData también es un diccionario pero con la característica de que se mantiene durante una solicitud HTTP. Esto nos permite “transportar” un valor desde un controlador a otro controlador cuando se realiza una re-dirección.

Como siempre digo, es bueno tener presente las diferencias entre los mismos, al momento de tener que elegir una opción para transportar datos a la vista.

Espero que les sea útil 🙂

Anuncios