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