Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Generar rutas en minúsculas desde ASP.NET Core MVC

Como ocurría en ASP.NET MVC 5 y anteriores, en ASP.NET Core MVC también podemos utilizar la información almacenada en la tabla de rutas para generar URLs hacia nuestras acciones, evitando las frágiles dependencias que introducen en las aplicaciones las direcciones hard-coded.

El framework nos ofrece distintas fórmulas para generar direcciones, aunque la más básica es utilizar extensores de IUrlHelper como Action(), Link() o RouteUrl(). Tenemos instancias de dicho interfaz disponibles en la propiedad Url de controladores y vistas, pero también podemos reclamarlas directamente al sistema de inyección de dependencias en otros contextos. Asimismo, en las vistas podemos utilizar helpers específicos para generar hipervínculos, como el clásico Html.Action(), o el más reciente tag helper .

Los siguientes bloques de código muestran fórmulas válidas para conseguir un link hacia la misma funcionalidad de la aplicación, por ejemplo hacia la acción que visualiza un artículo en un catálogo, aunque con resultados ligeramente distintos sobre la ruta generada:

Generación del enlace Ruta generada



    View product 18

/products/SHOW/18


@Html.ActionLink("Show product 18",
    "show",        // Action
    "pRoDuCtS",    // Controller   
    new { id=18 }  // Route params
)

/pRoDuCtS/show/18


   asp-action="Show" asp-route-id="18">
    Show product 18

/Products/Show/18

Si observáis, el uso de mayúsculas o minúsculas en la URL generada es arbitrario, un simple reflejo del casing utilizado por el desarrollador a la hora de codificar la generación del enlace. Desconozco si esto podría tener implicaciones en temas como el SEO por tratarse de direcciones distintas hacia el mismo recurso, pero lo que es seguro es que desde el punto de vista del usuario no queda muy elegante, y da sensación de falta de homogeneidad y criterio en el desarrollo.

Dado que lo habitual es que las direcciones usen exclusivamente minúsculas, ASP.NET Core MVC lo pone bastante sencillo. Basta con establecer la cierto la propiedad LowercaseUrls en las opciones de configuración del sistema de routing en la clase de inicialización:
public class Startup
{
[...]

public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.Configure(opt =>
{
opt.LowercaseUrls = true;
});
}
}
De esta forma, si volvemos a probar los ejemplos que vimos anteriormente, todos ellos generarán la misma dirección "/products/show/18", independientemente del casing usado al implementarlo :)

Ojo, hay que tener en cuenta que esto aplica exclusivamente a los parámetros que formarán parte de la ruta, pero no aquellos que aparecerán como parámetros adicionales de la query string. Es decir, usando la ruta por defecto de MVC tendremos el siguiente resultado:

Generación de ruta Resultado

Url.Action("SHOW", "products",
    new { 
          id="APPLE-iphone-4",
          extra="REFURBISHED"
    }
)

/products/show/apple-iphone-4?extra=REFURBISHED

Publicado en Variable not found.


This post first appeared on Variable Not Found, please read the originial post: here

Share the post

Generar rutas en minúsculas desde ASP.NET Core MVC

×

Subscribe to Variable Not Found

Get updates delivered right to your inbox!

Thank you for your subscription

×