¿QUE ES EL ROUTING?

El Routing es la funcionalidad de una aplicación MVC que indica que vistas tienen que ser manejadas por un determinado controlador.

Por defecto la ruta que se crea al añadir un controlador con su vista correspondiente tiene el siguiente formato:

http://{ServerName}/{controller}/{action}

El routing nos permite personalizar esta ruta para introducir nuevos parámetros o URL`s en el controlador.

El primer archivo que tiene información sobre las rutas de nuestra aplicación MVC es el archivo Global.asax.


Global.asax

RouteConfig.RegisterRoutes(RouteTable.Routes)

Este archivo hace referencia a un archivo de clase (.cs) que esta situado en la carpeta App_Start.

Dentro de la carpeta App_Start encontramos la clase Route_Config.cs y dentro de este archivo encontramos por defecto lo siguiente:

routeconfig.cs

routes.MapRoute

maproute

Los parámetros usados son los siguientes:

Name → Nombre de la ruta

url → Url de la ruta, compuesta por un controlador, un ActionResult dentro del controlador y un id que es un parámetro opcional

defaults → Valores por defecto en caso de que alguno de estos tres parámetros anteriores falten.

 routes.IgnoreRoute

ignoreroute

Esta línea se encarga de restringir las rutas no deseadas como por ejemplo Trace.axd o WebResource.axd


Ahora que hemos visto las rutas por defecto que crea una aplicación ASP.NET MVC vamos a crear nuestras propias rutas y ver cuál es su funcionamiento.

Dentro del RouteConfig las peticiones se realizan de forma que se usara la primera ruta que coincida obviando todas las demás. Por ese motivo se debe de dejar la ruta por defecto siempre la última.

Vamos a realizar una pequeña demostración de como funciona el routing en una aplicación MVC con este sencillo ejemplo de una tienda de música.

En nuestro archivo RouteConfig.cs alojado en la carpeta App_Start creamos un nuevo MapRoute de acuerdo con nuestras necesidades para la tienda, que va a vender vinilos y CD`s.

maproutemio

Ahora vamos a crear un controlador llamado TiendaController y añadimos un ActionResult de Buscar con el código correspondiente.

Dentro del ActionResult de Buscar, recuperamos los parámetros de la URL que hemos indicado anteriormente en el route.MapRoute del archivo RouteConfig.cs

actionresultbuscar

Después de recuperar estos dos valores, hacemos un pequeño bucle para que nos muestre un mensaje dependiendo de la url a la que hayamos accedido desde nuestro navegador.

codigotienda

Una vez hayamos creado este sencillo codigo para mostrar un pequeño mensaje dependiendo de la ruta a la que accedamos, la aplicación estaría lista para ser probada.

Ahora es el momento de probar que el routing funciona como debería.

Vamos a acceder a tres diferentes URL para probar todos los casos posibles:

 

http://localhost:44139/Tienda/vinilos/scorpions

prueba1

http://localhost:44139/Tienda/cd/queen

prueba2

 

http://localhost:44139/Tienda/cd/alguien

prueba3

Con este sencillo ejemplo podemos ver la funcionalidad que nos da el Routing y las ventajas que nos ofrece.


Una vez mostrado como de usa route.MapRoute y su correcto funcionamiento, vamos a ver como manejar las Url dentro de un ActionResult, de modo que podamos indicar varias peticiones para un mismo controlador y también cuales son los pasos para incluir un Route personalizado.

Lo primero es indicar sobre el RouteConfig usado anteriormente que vamos a usar atributos personalizados dentro de los Action del controlador.

registerRoutes

Vamos a realizar algunos cambios en la aplicación creada anteriormente para poder hacer uso de estos atributos.

Primero creamos un archivo Ado Net Entity Data Model que se llamara ContextoMusica y agregamos una tabla Musicos que hemos creado anteriormente.

contexto

Después de crear la conexión con la bbdd, vamos a crear sobre Models, una nueva clase ModeloMusicos e incluimos funcionalidad de Mostrar y Eliminar.

modeloMusico

 

Ahora vamos a crear las vistas que necesitamos para Visualizar y Eliminar los músicos correctamente

Vamos a necesitar dos vistas que vamos a crear con Scaffolding:

Index.cshtml → Lista de Musicos

Delete.cshtml → Borrar un Musico

 

INDEX.CSHTML

indexsca

Cambiamos el archivo generado a nuestro gusto para dejarlo parecido a esto:

index2

ELIMINAR.CSHTML

deletesca2

Cambiamos el archivo generado a nuestro gusto para dejarlo parecido a esto:

eliminar2

 

Despues de crear las dos vistas vamos a la carpeta Controllers y creamos un nuevo controlador llamado MusicosControllers.

Una vez creado este controlador, y añadido el codigo que necesitemos tendremos el problema de tener dos métodos Delete con los mismos argumentos, con lo que nos dará un error

actionresults

Pero gracias a el atributo route, este problema se soluciona fácilmente, ya que podemos llamar al método Delete como queramos ya que gracias a este atributo podemos hacer que redirija a la url que queramos.

musicocontroller2

En este controlador tenemos 3 ActionResult, Index, Delete (GET) y Delete(POST) ahora llamado EliminarMusico.

Index → Encargado de mostrar la lista de músicos

Delete[HttpGet] → Encargado de mostrar el musico elegido antes de eliminarlo completamente

Delete[HttpPost] → Encargado de eliminar el musico seleccionado anteriormente redireccionando despues al ActionResult de Index

Llegados a este punto, lo que podemos hacer es probar la aplicación.

¡MUCHA SUERTE!

Autor: Adrian Miguel Blanco

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin

Centro: Tajamar

Año Académico: 2017-2018

Codigo:GitHub

LinkedIn: Adrian Miguel Blanco