martes, 11 de octubre de 2016
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
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:
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
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:
Publicado en Variable not found.
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 <a>
. 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 |
---|---|
<!-- HTML + Url helper --> | /products/SHOW/18 |
<!-- Html helper --> | /pRoDuCtS/show/18 |
<!-- Tag helper --> | /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<RouteOptions>(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",
|
/products/show/apple-iphone-4?extra=REFURBISHED |
Publicado en Variable not found.
Aún no hay comentarios, ¡sé el primero!
Enviar un nuevo comentario