Para que esto que hemos descrito tome sentido, lo que se hace es que el controlador pregunta por los datos directamente al modelo en caso de ser necesario y luego hace todos los arreglos correspondientes para pasar los datos relevantes a la vista.
ViewBag
Antes de pasar a ver como se utiliza el modelo, primero debemos conocer el método ViewBag, este funciona como un empaquetador para el método ViewData de forma que podamos hacer una implementación más limpia al momento de definir los datos en el controlador.
Veamos en la siguiente imagen una definición del controlador About utilizando este método:
Acá vemos como definimos las diferentes propiedades con el método ViewBag seguido de un punto y el nombre de la propiedad que hará la diferencia, con esto nos evitamos escribir corchetes y comillas disminuyendo así la cantidad de caracteres a escribir.
Luego en nuestra vista about.cshtml podremos obtener los datos como vemos en el siguiente código:
<h1>@ViewBag.CompanyName</h1> <div>@ViewBag.CompanyDescription</div>
Si tenemos un modelo ya hecho como por ejemplo el siguiente:
public class CompanyInfo { public string Name { get; set; } public string Description { get; set; } }
Podemos acceder a sus propiedades haciendo una instancia en nuestro controlador de la forma que vemos en la siguiente imagen:
La primera propiedad es bastante sencilla simplemente decimos que el nombre del usuario es el correspondiente con el sistema de autenticación del framework, luego definimos una variable la cual será una instancia de nuestro modelo y gracias a los constructores podemos hacer el establecimiento de los valores de los atributos del modelo, en este caso Name y Description por último retornamos nuestra vista.
Recibiendo los Datos en la Vista
Ya que hemos establecido los datos en el controlador que provienen de nuestro modelo es hora de hacer que la vista muestre los datos que el usuario espera recibir luego de haber consultado el recurso.
Veamos el siguiente código:
@{ var company = (CompanyInfo)ViewData.Model; } <h1>@company.Name</h1> <div>@company.Description</div>
Lo primero que realizamos es igualar una variable y decirle que va a ser tipo del modelo a utilizar y adicionalmente la vinculamos con el método ViewData, todo esto en un bloque razor, luego simplemente accedemos a cada propiedad del modelo con un punto, como vemos es algo muy simple y que no lleva una complejidad mayor, esto es gracias a que el controlador hizo la mayoría del trabajo.
Finalizando el tutorial ya sabemos cómo obtener datos desde una estructura de un modelo y luego mostrarlo en la vista con la ayuda del controlador.