Se sabe que generalmente para cada acción perteneciente a un controlador , se debe generar una vista . Digo no siempre ya que , no todas las acciones devuelven un resultado físico , sino también pueden devolver uno lógico como por ejemplo , que te devuelva una acción de un INSERT , UPDATE o DELETE, y el tipo de resultados pueden variar , tales como ActionResult , JsonResult , JavaScriptResult u otros.
En esta ocasión veremos como pasar resultados de un controlador a una vista, en si esto es continuación del post anteriormente realizado Acceso a Datos y Entidades.
Antes que nada , explicaré brevemente que es Razor.
Razor , es un motor de vistas que nos permite programar un codigo flexible en html, ya sea C# o VB , resumiendo en palabras entendibles , puedes programar el code behind en html , iniciando cada bloque de codigo con el caracter @.
Puede ver mas acerca de esto donde la Microsoft explica mejor su sintaxis. Sintaxis Razor .NET
1. Para crear la vista de una acción , debemos dar click derecho encima del nombre del mismo y seleccionamos "Agregar Vista".
el cual nos creará la vista , pero primero creando su carpeta respectiva.
2. Para pasar los datos de un controlador a una vista , podemos guardar el resultado en un "diccionario de datos", tales como un ViewBag o ViewData , en los cuales puedes asignarles un grupo de datos para poder recuperarlos en la vista que le corresponde a la acción, tal y como lo hice en el anterior post.
public class ClienteController : Controller { Models.AccesoDatos db = new AccesoDatos(); public ActionResult Clientes() { var Clientes = db.ListarClientes(); var lista = new List<ClienteModel>(); foreach (DataRow r in Clientes.Rows) { lista.Add(new ClienteModel(r.ItemArray)); } var ListaClientes = lista.ToList(); ViewBag.ListaClientes = ListaClientes; return View(); } }3.Construyendo la vista por medio del "ViewBag".
@{ ViewBag.Title = "Clientes"; } <h2>Clientes</h2> <table> <thead> <tr> <th>IdCliente</th> <th>Cliente</th> <th>Direccion</th> <th>Pais</th> </tr> </thead> <tbody> @foreach (var c in ViewBag.ListaClientes as List<MvcApplication1.Models.ClienteModel>) { <tr> <td>@c.IdCliente</td> <td>@c.NombreCompañia</td> <td>@c.Direccion</td> <td>@c.Pais</td> </tr> } </tbody> </table>Que hago aqui ?
1.Las vistas reconocen los ViewBag o ViewDatas , provenientes de mi accion correspondiente, por eso es que llamo directamente a mi ViewBag en la vista.
2.Mediante "Razor" , abro un bloque de codigo con el caracter @, veran que puedo ingresar codigo C#.
3. Por medio de un for each haciendo referencia a una variable e indicandole que es una Entidad , en este caso ClienteModel , puedo acceder a las propieades del model y pasar a llenar mi tabla con los datos.
Aqui dejo un enlace donde pueden descargar la solución.
No hay comentarios:
Publicar un comentario