El Ruteo es la parte de ASP.NET que nos permite realizar una relación entre las URL's y los distintos recursos que contiene tu proyecto. Por tanto, utilizando ruteo es que podemos definir hacia qué acción de qué controlador es que debemos dirigir una petición HTTP.
Tenemos dos opciones para manejar el ruteo: Ruteo tradicional y ruteo por atributo. En este post nos concentraremos en el ruteo tradicional.
Antes, lo que se hacía era servir archivos de tu servidor web (típicamente archivos HTML, o ASPX en web Forms), esto era una desventaja pues, si cambiabas el nombre de un ASPX, potencialmente se podían romper varios links. El ruteo es diferente, porque en vez de que la URL apunte a un archivo físico de tu escritorio, simplemente son URL's las cuales, mediante reglas de ruteo, podemos definir hacia donde van.
Imagina las reglas de ruteo como una interfaz entre el usuario y tus controladores, de modo que las reglas de ruteo definen hacia donde va tal o cual petición HTTP.
Por defecto, cuando creamos un proyecto de ASP.NET MVC 5, se nos crea un folder llamado App_start, y en este se encuentra una clase llamada RouteConfig. Es en esta clase donde definimos nuestras reglas de ruteo del modo tradicional.
Entra a la clase RouteConfig. Aquí, verás el método RegisterRoutes, el cual recibe un RouteCollection como parámetro. Utilizando este objeto es que podrás definir las reglas de ruteo.
Para definir una regla de ruteo utilizamos el método MapRoute de dicho objeto. Ejemplo:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
En este código vemos que definimos un nombre, una url y un defaults:
- El nombre de la regla de ruteo sirve para identificarla de manera única.
- La URL es la URL con la cual se activa nuestra regla de ruteo
- Defaults son los valores por defecto que se le pasan a los parámetros definidos en la URL
Los parámetros de la URL se definen entre llaves {}. La idea es que estos valores son variables.
Supongamos que nuestro dominio es pagina.com. Entonces, la regla de ruteo anterior nos dice que si ingresamos a pagina.com, entonces iremos al controlador Home, a la acción Index, esto es, porque aunque no estamos pasando estos parámetros vía la URL, los tenemos definido en la sección Defaults.
En cambio, si hacemos un GET a pagina.com/Admin/Listado, entonces estaremos intentando invocar la acción Listado del controlador Admin.
En la URL de la regla de ruteo podemos colocar strings para indicar lo que queremos que salga en la URL. Por ejemplo:
routes.MapRoute(
name: "Acerca",
url: "Acerca",
defaults: new { controller = "Home", action = "About" }
);
Esta regla de ruteo quiere decir que, si colocamos pagina.com/Acerca en el navegador, entonces la petición HTTP será dirigida a la acción About del controlador Home.
No hay comentarios:
Publicar un comentario