Personalizar el enrutamiento de nuestra aplicación ASP.NET MVC

Por defecto cuando creamos una aplicación ASP.NET MVC se define una tabla de enrutamiento que se encarga de decidir que controlador gestiona cada petición Web basándose en la URL de dicha petición. Esta forma de enrutamiento presenta dos grandes ventajas con respecto a las aplicaciones tradicionales de ASP.NET:

1. En cada petición URL no se asigna un archivo físico del disco como una página .aspx, sino que se asigna una acción de un controlador (más un parámetro), que nos mostrará una vista específica.

2. Las rutas son lógicas, es decir, siguen la estructura definida en la tabla de enrutamiento, lo que favorece y facilita la gestión de la navegación en nuestro sitio.

A continuación, podemos ver la tabla de enrutamiento que se genera por defecto al crear una aplicación ASP.NET MVC. Esta tabla de enrutamiento se implementa en el archivo global.asax, y esta definida de la siguiente manera:

 

  1. routes.IgnoreRoute(«{resource}.axd/{*pathInfo}»);
  2.  
  3.             routes.MapRoute(
  4.                 «Default»,                                              // Route name
  5.                 «{controller}/{action}/{id}»,                           // URL with parameters
  6.                 new { controller = «Home», action = «Index», id = «»// Parameter defaults
  7.             );

Si implementamos nuestra aplicación, sin modificar este enrutado, podemos comprobar que, según los parámetros iniciales, se toma por defecto el controlador Home, y la acción Index (tenga o no identificador) como se puede observar en las siguientes imágenes:

image image

Esto funciona así ya que la cadena «Home» se convierte en el parámetro del controlador {controller}, y la cadena «Index» en el parámetro de la acción {action}

Si en nuestra aplicación vamos a utilizar varios controladores nos interesa definir sus rutas de forma individual. Para ello vamos a ver un pequeño ejemplo de como se podría personalizar nuestra tabla de enrutamiento. En nuestro caso, partimos de un proyecto ASP.NET MVC creado para la gestión de libros y al que queremos añadir la posibilidad de gestionar música. Para ello añadimos un nuevo controlador que se llamará Music, y que contará con una acción Category que simplemente nos tiene que mostrar un texto plano en el que ponga la categoría de la música que estamos indicando a través de la URL.

El código que utilizaremos para definir el enrutamiento de nuestra aplicación de música será el siguiente (siguiendo la estructura básica):

  1. routes.MapRoute(
  2.                 «Musica»,                                                         
  3.                 «{controller}/{action}/{categoria}»,                              
  4.                 new { controller = «Music», action = «Category», categoria = «»
  5.             );

Y dentro de nuestro controlador añadiremos el código:

 

  1. public string Category(string categoria)
  2.         {
  3.  
  4.             return «Categoría: « + «<b>»+ categoria + «</b>»;
  5.  
  6.         }

 

Al compilar nuestra aplicación podemos comprobar que si ejecutamos la ruta especificada para nuestro apartado de música, pasándole un parámetro de tipo categoría como puede ser Jazz, se nos muestra el resultado definido a través de la acción Category.

image

Este es un ejemplo muy simple, pero a la vez es extensible a cualquier tipo de aplicación más compleja. Para profundizar en el tema y ver más opciones referentes al mismo, aquí os dejo una página muy útil para introducirse en el mundo del enrutamiento con ASP.NET, en general, y también para MVC. Os recomiendo echarle un vistazo, ya que a mi me a servido muchísimo para ponerme al día con este tema…;)

Otras fuentes:

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx (depuración de enrutamiento)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *