Quantcast
Channel: Planeta Código
Viewing all articles
Browse latest Browse all 2715

Variable not found: Generar rutas en minúsculas desde ASP.NET Core MVC

$
0
0
ASP.NET CoreComo 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 <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 enlaceRuta generada

<!-- HTML + Url helper -->
<a href="@Url.Action("SHOW", "products", new { id=18 })">
    View product 18
</a>

/products/SHOW/18

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

/pRoDuCtS/show/18

<!-- Tag helper -->
<a asp-controller="Products" 
   asp-action="Show" asp-route-id="18">
    Show product 18
</a>

/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 rutaResultado

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

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

Publicado en Variable not found.

Viewing all articles
Browse latest Browse all 2715

Trending Articles


Girasoles para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Tagalog Quotes About Crush – Tagalog Love Quotes


OFW quotes : Pinoy Tagalog Quotes


Long Distance Relationship Tagalog Love Quotes


Tagalog Quotes To Move on and More Love Love Love Quotes


5 Tagalog Relationship Rules


Best Crush Tagalog Quotes And Sayings 2017


Re:Mutton Pies (lleechef)


FORECLOSURE OF REAL ESTATE MORTGAGE


Sapos para colorear


tagalog love Quotes – Tiwala Quotes


Break up Quotes Tagalog Love Quote – Broken Hearted Quotes Tagalog


Patama Quotes : Tagalog Inspirational Quotes


Pamatay na Banat and Mga Patama Love Quotes


Tagalog Long Distance Relationship Love Quotes


BARKADA TAGALOG QUOTES


“BAHAY KUBO HUGOT”


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.