Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guillermo Rivera
INTRODUCCIÓN.
Los controladores dentro del modelo MVC son responsables de manejar las entradas del usuario, a
menudo haciendo cambios al modelo en respuesta a la entrada del usuario. De esta manera, los
controladores tienen que ver con la esencia de la aplicación, trabajando con datos que llegan y
proporcionando datos hacia la vista relevante.
En el modelo MVC, el URL le dice al mecanismo de ruteo cuál clase controladora instanciar y cuál
método de acción llamar, y proporciona los argumentos requeridos a ese método. El método del
controlador entonces decide cuál vista usar y esa vista entonces genera el HTML.
En lugar de tener una relación directa entre el URL y un archivo en el disco duro del servidor, existe
una relación entre el URL y un método en una clase controladora. ASP.NET MVC implementa la
variante del controlador frontal del modelo MVC y el controlador se ubica frente a todo excepto el
subsistema de ruteo.
NOTA: MVC requiere que el nombre de todos los controladores finalice con el sufijo “Controller”.
El controlador HomeController.
Por defecto, esta carpeta incluye los controladores siguientes:
1. HomeController: responsable de la página de inicio en la raíz del sitio web, así como de las
páginas About (Acerca de) y Contact (Contacto).
2. AccountController: responsable de solicitudes relacionadas con la cuenta, tales como
usuario y registro de cuenta.
El controlador HomeController contiene código similar al mostrado a continuación:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Ejemplo1MVC.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
1 de 7
Programación II Ing. Guillermo Rivera
Observe que esta es una clase simple que hereda de la clase base Controller. El método Index() es
responsable de decidir qué sucede cuando navega hacia la página de inicio del sitio web.
Sin embargo persiste la pregunta “¿Cómo son mapeados los URL hacia los métodos de acción del
controlador?” La respuesta es el ruteo de ASP.NET. Al revisar el archivo Global.asax se tiene el
método RegisterRoutes():
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
2 de 7
Programación II Ing. Guillermo Rivera
namespace Ejemplo1MVC
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
Observe que contiene un evento llamado Application_Start() que es ejecutado cada vez que inicia
la aplicación. Dentro de este método se tiene una llamada al método RegisterRoutes() de la clase
RouteConfig, que se encuentra definida dentro de la carpeta App_Start.
Haga clic derecho sobre el método RegisterRoutes() y seleccione la opción Go To Definition para
abrir la clase RouteConfig.
NOTA: Puede abrir directamente la clase RouteConfig desde la carpeta App_Start, pero se usa
este método para demostrar la relación entre ellos.
namespace Ejemplo1MVC
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
}
}
}
3 de 7
Programación II Ing. Guillermo Rivera
Para probar el parámetro agregue un valor al final del URL. Debería obtener el mismo resultado.
Si desea manejar el valor enviado en el URL cambie el código del método de acción Index() como se
muestra:
namespace Ejemplo1MVC.Controllers
{
public class HomeController : Controller
{
public string Index(string id)
{
return "id = " + id;
}
...
URL: URL:
http://localhost/Ejemplo1MVC/ http://localhost/Ejemplo1MVC/home/index/10
4 de 7
Programación II Ing. Guillermo Rivera
URL: URL:
http://localhost/Ejemplo1MVC http://localhost/Ejemplo1MVC/home/index/10?nombre=Ren
/ e
namespace Ejemplo1MVC
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
}
}
}
5 de 7
Programación II Ing. Guillermo Rivera
Para mostrar el archivo de rastreo abra el archivo Web.config y agregue la línea coloreada en
amarillo:
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=301880
-->
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit
http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,
EntityFramework, Version=6.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
requirePermission="false"/>
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\aspnet-Ejemplo1MVC-20160928092159.mdf;
Initial Catalog=aspnet-Ejemplo1MVC-20160928092159;Integrated Security=True;
User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
<system.web>
<trace enabled="true" pageOutput="false"/>
<authentication mode="None"/>
...
URL: URL:
http://localhost/Ejemplo1MVC http://localhost/Ejemplo1MVC/home/index/10?nombre=Ren
/ e
6 de 7
Programación II Ing. Guillermo Rivera
Esto es así porque la línea siguiente a la línea en comentario no tiene la capacidad para manejar la
petición de mostrar el archivo de configuración.
NOTA: Gran parte de este material ha sido tomado de los videos publicados por Kud Venkat de
Pragim Technologies, Marathalli, Bangalore, India. Puede encontrar los videos originales en la
direción URL siguiente:
http://csharp-video-tutorials.blogspot.com/p/aspnet-mvc-tutorial-for-beginners.html
7 de 7