2009-01-30 1 views
8

Без создания моего собственного ActionLink HtmlHelper есть способ заставить любые ActionLinks визуализироваться в нижнем регистре?Принуждение ActionLinks, которое будет отображаться как нижний регистр

Update: Проверьте следующие ссылки для расширения RouteCollection добавить 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/]

Update - 02/03/2011: Поскольку две ссылки выше в настоящее время работа nolonger, я сделал сообщение некоторое время назад с моим решением

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

+0

FYI, ссылки в вопросе мертвы. – trebormf

ответ

10

Лучший способ справиться с этим - на уровне маршрутизации. Заставьте все маршруты маршрутов быть строчными, и он будет правильно распространяться на ваши действия и т. Д.

Как я решил, это создать новый класс маршрута, который наследует Route и просто переопределяет метод 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; 
} 

Я также создал несколько методов расширения для RouteCollection, чтобы сделать его легко использовать этот новый класс маршрута.

+1

Спасибо. В качестве решения он работает. Я надеялся, что будет проще (не нужно создавать и использовать собственный класс Route), чтобы это сделать, но не удалось найти его. –

Смежные вопросы