Принудительный рендеринг ActionLinks в нижнем регистре

Есть ли способ заставить любые ActionLink отображаться в нижнем регистре без создания моего собственного ActionLink HtmlHelper?

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

Обновление - 02/03/2011: поскольку две приведенные выше ссылки больше не работают, некоторое время назад я опубликовал свое решение.

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


person Luke Smith    schedule 30.01.2009    source источник
comment
К вашему сведению, ссылки в вопросе мертвы.   -  person trebormf    schedule 01.03.2011


Ответы (1)


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

Я решил эту проблему путем создания нового класса маршрута, который наследует 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, чтобы упростить использование этого нового класса маршрута.

person thomasjo    schedule 30.01.2009