2009-01-30 20 views
8

Sin crear mi propio ActionLink HtmlHelper ¿hay alguna manera de forzar que cualquier ActionLinks se muestre en minúscula?Obligar ActionLinks a que se muestren como minúsculas

Actualización: Comprobar los siguientes enlaces para ampliar el RouteCollection añadir LowecaseRoutes [ http://www.makiwa.com/index.php/2008/05/31/lowercase-mvc-route-urls/] [ http://goneale.wordpress.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/]

Actualización - 02/03/2011: Puesto que los dos enlaces arriba ahora nolonger trabajo, hice una publicación hace un tiempo con mi solución

http://blog.lukesmith.net/2009/02/01/generating-and-enforcing-that-any-link-and-request-is-lowercase-with-aspnet-mvc/

+0

FYI, los enlaces en la pregunta están muertos. – trebormf

Respuesta

10

La mejor manera de manejar esto es en el nivel de enrutamiento. Obligar a todas las trayectorias de rutas a estar en minúsculas, y se propagará adecuadamente a sus enlaces de acción, etc.

La manera en que yo he resuelto esto, es crear una nueva clase de ruta que hereda Route y simplemente reemplaza el método GetVirtualPath;

public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) 
{ 
    var virtualPath = base.GetVirtualPath(requestContext, values); 

    if (virtualPath != null) 
     virtualPath.VirtualPath = virtualPath.VirtualPath.ToLowerInvariant(); 

    return virtualPath; 
} 

También he creado algunos métodos de extensión para RouteCollection para que sea fácil de usar esta nueva clase de ruta.

+1

Gracias. Como solución, funciona. Esperaba que hubiera una manera más fácil (no es necesario crear y usar mi propia clase de ruta) para hacer esto, pero no he podido encontrar uno. –

Cuestiones relacionadas