jueves, 18 de julio de 2013

Razor y MVC 4 .NET

Introducción :

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.

Espero les sirva este pequeño instructivo.
Aqui dejo un enlace donde pueden descargar la solución.

No hay comentarios:

Publicar un comentario