asp.net-mvc - mvc - route controller net core
.NET 4.5 MVC RouteCollection.LowercaseUrls se rompe cuando se usa Área (1)
De hecho, esto parece ser un error en la interacción entre ASP.NET MVC y la nueva característica LowercaseUrls de ASP.NET 4.5 en el enrutamiento.
He registrado un error para MVC aquí: http://aspnetwebstack.codeplex.com/workitem/685
¡Gracias por reportar esto!
Como menciona Cristi Pufu, parece que otros han escrito algunos paquetes de NuGet para manejar escenarios similares:
- nuget.org/packages/LowercaseRoutesMVC - agrega soporte para URL en minúsculas
- http://nuget.org/packages/AttributeRouting : agrega un soporte súper elegante para toneladas de características ordenadas, incluidas URL en minúsculas (consulte https://github.com/mccalltd/AttributeRouting/wiki/Generating-Lowercase-Outbound-URLs )
EDITAR 23/04/2013 - Recientemente hemos aceptado una solicitud de extracción con una solución para este problema para ASP.NET MVC 5.
Se agregó una nueva propiedad a RouteCollection con .NET Framework 4.5:
http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.lowercaseurls.aspx
Esto funciona muy bien, hasta que agregue un Área a su proyecto. Todas las URL son de nuevo en mayúsculas.
¿Alguna idea de por qué sucede esto? Es fácil de reproducir:
- Crear nueva aplicación de Internet MVC 4 (.NET 4.5)
- Inicie la función RouteConfig.RegisterRoutes con: route.LowercaseUrls = true;
- Ejecute el proyecto y verá que todas las direcciones URL generadas ahora están en minúsculas.
- Añadir un área al proyecto.
- Ejecuta el proyecto de nuevo y verás que todas las URL son de nuevo en mayúsculas.
Se rompe en el punto en que se ejecuta context.MapRoute en AreaRegistration.RegisterArea. Cuando comento eso, obtuve Urls en minúscula. Descoméntalo, y las URLs en mayúsculas están de vuelta.
Me parece que Microsoft sabe que esto tiene errores y no anuncia esta nueva característica, ya que es una característica realmente excelente, pero solo se menciona en los documentos de MSDN.