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