¿Cuál es la diferencia entre ViewBag, ViewData?

publicado por: Anonymous

Sabemos que ViewData o ViewBag son utilizados para pasar información del controlador a la vista.

¿Existe alguna diferencia entre ambos? Por ejemplo, en cuanto al rendimiento y si es recomendable el uso de uno en particular.

solución

ViewBag es simplemente un wrapper sobre ViewData. La diferencia es que mientras que ViewData es de tipo ViewDataDictionary (que implementa un IDictionary<string, object>, ViewBag es de tipo dynamic lo que simplifica el código ligeramente.

Ejemplo:

ViewData["Persona"] = new Persona("Alice");

// o

ViewBag.Persona = new Persona("Alice");

En cuando a diferencia en rendimiento debería ser despreciable, preocúpate mejor por otros lugares que pueden realmente ser un cuello de botella como por ejemplo acceso a base de datos

En cuanto a cual es mejor, pues la sintaxis de dynamic es ligeramente mas corta, pero es cuestión de gustos. Ten en cuenta que ninguna de las dos opciones son strongly typed lo cual puede conllevar a tener errores en tiempo de ejecución si tipeas mal el key en este caso Persona . Lo ideal en realidad es pasar toda la información entre el controller y la vista mediante un Model

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *