ASP.NET MVC 5 – Attribute routing

Hasta ahora el mecanismo de enrutamiento de ASP.NET MVC  establecía que una URI coincidía con una acción – dicho mecanismo es conocido como enrutamiento basado en convención-. Una de las novedades de ASP.NET MVC 5 es un nuevo mecanismo de routing basado en atributos – Attribute Routing – el cual utiliza atributos para definir el ruteo, y nos permite tener mucho mas control sobre las URI de nuestra web.

Importante! En ASP.NET MVC 5 ambos mecanismos de routing son soportados y es posible combinar el uso de ambas técnicas dentro del mismo proyecto.

Veamos un ejemplo para ver toda la potencia del routing basado en atributos. Imaginemos que tenemos una página web de venta de productos y queremos el detalle de un producto tenga una URL similar a la siguiente:

http://localhost:8080/productos/1/Televisor 100 pulgadas

Y que se rutee a la siguiente acción:

ProductsController.Detail(int productId);

Como pueden ver en este caso hay varias cuestiones que “complican” el ruteo basado en convenciones. En primer lugar estoy usando en la URI el nombre productos para hacer referencia al controlador Products (esto suponiendo que mi sitio esta orientado al publico latinoamericano). Por otro lado en ningún momento hacemos referencia al nombre de la acciónDetail -. Y por último el titulo del producto es algo meramente descriptivo y mi acción no va hacer nada con él – al menos en este caso -.

Si bien esto no es imposible de hacerlo utilizando convention-based routing, si es cierto que se puede tornar molesto cuando debemos hacerlo repetidas veces:

Definición utilizando convention-based routing

Definición utilizando convention-based routing

Ahora trabajemos utilizando atributos! Lo primero que debemos hacer para habilitar esta feature es invocar a la función MapMvcAttributeRoutes en el proceso de registración del routing:

Habilitando Attribute Routing

Habilitando Attribute Routing

Lo que queda ahora es simplemente definir el routing por medio del atributo [Route]:

Definiendo el ruteo por medio de atributos

Definiendo el ruteo por medio de atributos

Simple, no?

Pero eso no es todo, también es posible definir prefijos, rutas por default, restricciones y áreas (temas que veremos es los siguientes posts).

Espero que les sea de utilidad!

Anuncios

3 comentarios en “ASP.NET MVC 5 – Attribute routing

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s