Saltar apartados

Enrutamiento

El enrutamiento ASP.NET permite usar direcciones URL que no es necesario asignar a archivos específicos de un sitio web. Dado que la dirección URL no tiene que asignarse a un archivo, se pueden usar direcciones URL que describan la acción del usuario y, por tanto, sean más fáciles de comprender.

En una aplicación ASP.NET que no utiliza el enrutamiento, una solicitud entrante de una dirección URL normalmente se asigna a un archivo físico que controla la solicitud, como un archivo .aspx. Por ejemplo, una solicitud de http://server/application/Products.aspx?id=4 se asigna a un archivo denominado Products.aspx que contiene código y marcado para representar una respuesta al explorador. La página web utiliza el valor de cadena de consulta id=4 para determinar el tipo de contenido que se va a mostrar.

En el enrutamiento de ASP.NET, se pueden definir modelos de dirección URL que se asignen a archivos de controlador de solicitudes pero que no necesariamente incluyan los nombres de esos archivos en la dirección URL. Además, se pueden incluir marcadores de posición en un modelo de dirección URL de modo que se puedan pasar datos variables al controlador de solicitudes sin necesidad de una cadena de consulta.

Los modelos de dirección URL para las rutas en las aplicaciones de MVC suelen incluir los marcadores de posición {controller} y {action}.

Por ejemplo, una dirección URL que incluye la ruta de acceso /Products está asignada a un controlador denominado ProductsController. El valor del parámetro action es el nombre del método de acción que se invoca. Una dirección URL que incluye la ruta de acceso /Products/show daría lugar a una llamada al método Show de la clase ProductsController.

El Modelo de dirección URL predeterminado es el siguiente

{controller}/{action}/{id}

y una dirección que se corresponde con este enrutamiento sería:

http://server/Catalogo/Listado/cursos

  • Controller: Catalogo
  • Action: Listado
  • Id: cursos

 

Agregar rutas a una aplicación de MVC

Es posible crear nuestra propia implementación de controladores con clases que deriven de la clase ControllerBase. Este proceso es algo laborioso con lo que nos vamos a centrar el enrutamiento que se define el fichero global.asax.

A continuación se define el enrutamiento por defecto que genera la plantilla de proyecto de Visual Studio para las aplicaciones de MVC.

public class MvcApplication : System.Web.HttpApplication

{

    public static void RegisterRoutes(RouteCollection routes)

    {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

        routes.MapRoute(

            "Default",                                              // Route name

            "{controller}/{action}/{id}",                           // URL with parameters

            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults

        );

 

    }

 

    protected void Application_Start()

    {

        RegisterRoutes(RouteTable.Routes);

    }

}

En la sección MapRoute podemos ver que se define con el formato anteriormente comentado. En la línea siguiente define los valores por defecto.

 

Si quisiéramos añadir un tercer parámetro a la ruta que indicara el idioma de la aplicación, sería tan sencillo como añadir en la sección MapRoute el parámetro {language}. En la tercera sesión veremos como hacer uso del parámetro y poder crear aplicaciones multiidiomáticas.

public class MvcApplication : System.Web.HttpApplication

    {

        public static void RegisterRoutes(RouteCollection routes)

        {

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

            routes.MapRoute(

                "Default", // Route name

                "{language}/{controller}/{action}/{id}", // URL with parameters

                new { language = "es", controller = "Catalogador", action = "Index", id = UrlParameter.Optional } // Parameter defaults

            );

 

        }

 

        protected void Application_Start()

        {

            AreaRegistration.RegisterAllAreas();

 

            RegisterRoutes(RouteTable.Routes);

        }

    }

Servicio de Informática ASP.NET MVC 2 Framework


Universidad de Alicante
Carretera de San Vicente del Raspeig s/n
03690 San Vicente del Raspeig
Alicante (Spain)

Tel: (+34) 96 590 3400

Fax: (+34) 96 590 3464

Para más información: informacio@ua.es, y para temas relacionados con este servidor Web: webmaster@ua.es

Carretera San Vicente del Raspeig s/n - 03690 San Vicente del Raspeig - Alicante - Tel. 96 590 3400 - Fax 96 590 3464