Есть ли способ заставить любые 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/
Ответ 1 · рейтинг 10 · thomasjo
Лучший способ справиться с этим - на уровне маршрутизации. Сделайте все пути маршрутов строчными, и они будут правильно распространяться на ваши ссылки действий и т. Д.
Я решил эту проблему путем создания нового класса маршрута, который наследует 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, чтобы упростить использование этого нового класса маршрута.