Desarrollando

en tu idioma

Escrito por: TiraCodigo
Etiquetas: asp.net, MVC, URL, Routing, rutas

Hablemos acerca de las rutas que se generan para los proyectos de MVC, si venimos de un entorno de desarrollo de web forms, notaremos que al acceso a los recursos se realizan de una forma diferente, ya que en web forms, prácticamente la ruta de la pagina era la dirección física de la pagina o recurso, esto en MVC cambia, ya que de acuerdo al formato de ruta o routing que tengamos especificado, se mostrara una acción u otra, a continuación en ejemplo de esto:

En webforms para ver un elemento podríamos tener un URL como la siguiente:

MiPrimeraAplicacionMVC/mostrarelemento.aspx?id=U1

Con MVC podríamos tener una ruta como la siguiente

MiPrimeraAplicacionMVC/elemento/mostrar/U1

La ruta en mvc esta obedeciendo el patron siguiente:

{Controlador} / {Acción} / {Id}

Lo que realizará el sistema, será entrar al controlador "elemento", y ejecutará la función "mostrar", y tomara como parámetro id el valor "U1", esta definición de patrones de la URL la encontramos dentro de nuestro proyecto en la carpeta de "App_Start", el archivo se llama "RouteConfig.cs"

 

Es en este archivo, donde se definen todos los formatos de las rutas, por default en los proyectos nuevos, siempre aparecerá el que te he mostrado, los parámetros de definición del formato de la ruta son los siguientes:

Name: En este parámetro definimos el nombre del formato de la ruta

URL: Aqui especificamos el formato

Default: definimos el objeto que tomara los valores por defecto del formato de la ruta, por ejemplo en la definición de la captura, de dice que por default, se va entrar al controlador "Home" y ejecutar la función "Index", y se le indica que el parámetro ID es opcional, por lo tanto no hace falta definirlo

Una vez entendido lo anterior, podríamos crear fácilmente otro formato de ruta, por ejemplo, si requiriéramos que se acceda directamente a una función en el controlador "Home" que se llame "MostrarElemento", con un id como parámetro, pero que no se accediera con la url MiPrimeraAplicacionMVC/Home/MostrarElemento/u1 si no con la url MiPrimeraAplicacionMVC/Mostrar/u1, tendríamos que tener la clase de la siguiente manera:

public class RouteConfig
  {
    public static void RegisterRoutes(RouteCollection routes)
    {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
          name: "Nueva",
          url: "Mostrar/{id}",
          defaults: new { controller = "Home", action = "MostrarElemento"}
      );

      routes.MapRoute(
          name: "Default",
          url: "{controller}/{action}/{id}",
          defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
      );
    }
  }

Ahora que hemos entendido como funcionan los formatos de las rutas y la manera de agregar otros, podemos pasar al siguiente punto, para conocer cual es el orden de ejecución de un proyecto en ASP MVC