ASP.NET MVC 3: ViewBag

Siguiendo con las característiscas de ASP.NET MVC 3 hoy vamos a hablar del objeto ViewBag.

En las versiones de ASP.NET MVC 1ASP.NET MVC 2 podíamos pasar datos directamente a la vista sin necesidad de un modelo por medio del diccionario ViewData. En ASP.NET MVC 3 se mejoro este mecanismo, introduciendo el objeto dinámico ViewBag. Ambos objetos son una propiedad que ofrecen los controladores.

A la propiedad ViewBag podemos asignarles propiedades dinamicamente en el controlador y consumirlas desde la vista de una manera muy simple y prolija.

Veamos un ejemplo de cómo trabaja el ViewData y luego comparémoslo con el ViewBag. Para esto vamos a definir en el método de acción Index del controlador Home una instancia de la clase Usuario. Esta clase tendra el siguiente formato:

1: public class Usuario 
2: {
3:     public string Nombre { get ; set ; }
4:     public int Edad { get ; set ; }
5: }

A la instancia creada la vamos a asignar a una nueva entrada del diccionario ViewData llamada “Usuario”:

1: public ActionResult Index()
2: {
3:     Usuario usuario = new Usuario() { Nombre = "Sebis" , Edad = 20 };
4:     ViewData["Usuario"] = usuario;
5:
6:     return View();
7: }

Desde la vista lo consumimos de la siguiente forma:

1: <h2>Index</h2> 
3:  @{
4:     var usuario = (Usuario)ViewData["Usuario"];
5:  }@
6:
9: Bienvenido  @usuario.Nombre ! Su edad es  @usuario.Edad años.

Ahora veamos el mismo ejemplo utilizando el objeto ViewBag. Para esto vamos a crear una propiedad llamada “Usuario” y vamos a asignarle nuestra instancia de la clase Usuario:

1: public ActionResult Index()
2: {
3:     Usuario usuario = new Usuario () { Nombre = "Sebis" , Edad = 20 };
4:     ViewBag.Usuario = usuario;
5:
6:     return View();
7: }

Lo siguiente sera consumirlo desde la vista:

1: <h2> Index</h2> 
2:
3: Bienvenido  @ViewBag.Usuario.Nombre ! Su edad es  @ViewBag.Usuario.Edad años.

En ambos casos obtendremos el mismo resultado:

Ejecutando el ejemplo

Ejecutando el ejemplo

Como podemos ver el uso de ViewBag nos proporciona un  código mucho más simple y prolijo. También nos evita realizar el casting de los object proporcionados en cada una de las entradas del ViewData. Finalmente tambien podemos decir que es mucho más simple acceder a las propiedades del objeto ViewBag que estar dependiento de los magic string de cada entrada creada en el diccionario ViewData.

Espero que les sea de utilidad!

Anuncios

2 comentarios en “ASP.NET MVC 3: ViewBag

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s