Escrito por: TiraCodigo
Etiquetas: ejemplo, asp.net, MVC, Tutorial
En esta parte del tutorial veremos cual es el flujo del programa, cuales son los puntos por donde pasa la ejecución de nuestro código, esto para entender un poco mas a profundidad como es que una aplicación en MVC trabaja, te recomiendo visitar el primer post de este tutorial para tener mas info del modelo MVC
Los pasos por los que pasa la ejecución de nuestra aplicación en MVC es el siguiente:
- El primer lugar que toca la ejecución de la aplicación al recibir una petición (un request), es en el archivo Global.asax.cs, en el cual podemos encontrar la función Application_Start()
- Después de pasar por el Global.asax, el proceso sigue y pasa por otros 2 puntos que son transparentes para el programador, que es donde se crea el RequestContext, mismo que es pasado al MVCHandler que es quien llama al controlador (Controller), y de ahi ejecuta el método correspondiente, por ejemplo, en nuestro proyecto si entráramos a la URL: localhost/MiPrimeraAplicacionMVC/Home/Index lo que realizaría nuestra aplicación es ejecutar el método "Index" de la clase "HomeController", hay que tomar en cuenta lo que se explico en el paso anterior del tutorial donde se habla de las rutas, donde vimos que el controlador es indicado en el segundo parámetro de la URL, hay que tomar en cuenta que si en la url dice Home, fisicamente el archivo se tendrá que llamar HomeController
- Dentro de la ejecución de este método, es donde vamos a utilizar el modelo (Model) para guardar en el los datos que enviaremos a la vista (View) para que esta ultima los muestre, empecemos por explicar el modelo, el cual encontraremos en la carpeta "Models" de nuestro proyecto, el modelo es una clase que define la estructura de los datos que enviaremos a nuestra vista, la cual encontraremos dentro de la carpeta "Views" de nuestro proyecto, a continuacion el modelo que utilizaremos en nuestro ejemplo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MiPrimeraAplicacionMVC.Models
{
public class MiModelo
{
public string Nombre;
public string Apellidos;
public int Edad;
}
}
Esta clase la deberemos guardar dentro de la carpeta "Models":
El modelo anterior lo utilizaremos para mandarle datos de nuestro controlador a nuestra vista, el método del controlador que ocuparemos para nuestro ejemplo es el "Index", en el cual crearemos un objeto de tipo "MiModelo", lo llenaremos y lo mandaremos a la vista para su visualización, teniendo de esta manera nuestro controlador:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MiPrimeraAplicacionMVC.Models;
namespace MiPrimeraAplicacionMVC.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
var m = new MiModelo();
m.Nombre = "Pancho";
m.Apellidos = "Perez";
m.Edad = 30;
return View(m);
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
Como podemos observar en el código anterior, instanciamos el modelo, lo llenamos y lo mandamos a la vista, para mandar el modelo a la vista solo es necesario ponerlo como parámetro en la función "View(Modelo)", automáticamente .Net sabe cual es el modelo a invocar ya que buscara dentro de la carpeta "Views" una carpeta dentro de esta con el nombre del controlador actual, el cual es "Home", y dentro de esta buscara el archivo .schtml con el nombre del método actual, es decir Index.schtml, ahora, dentro de este archivo, vamos a modificar el contenido para mostrar el contenido del modelo, quedándonos algo así:
@using MiPrimeraAplicacionMVC.Models
@model MiModelo
@{
ViewBag.Title = "Home Page";
}
<div class="jumbotron">
<h1>Ejemplo de modelo</h1>
<p>@Html.LabelFor(m => m.Nombre) : @Model.Nombre </p>
<p>@Html.LabelFor(m => m.Apellidos) : @Model.Apellidos</p>
<p>@Html.LabelFor(m => m.Edad) : @Model.Edad</p>
</div>
Si probamos nuestro proyecto en este momento, tendremos que ver la vista index, mostrando el contenido de el modelo que recibió, apareciendo algo mas o menos así: