没有创建我自己的ActionLink HtmlHelper,有没有一种方法可以强制将任何ActionLink呈现为小写形式?

更新:
请查看以下链接,以扩展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/]

更新-2011/02/03:
由于上面的两个链接现在不再起作用,因此我在解决方案上发表了一阵子

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

最佳答案

解决此问题的最佳方法是在路由级别。强制所有路由路径为小写,它将正确传播到您的操作链接等。

我解决此问题的方法是创建一个新的路由类,该类继承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创建了一些扩展方法,以使其易于使用此新的路由类。

10-04 20:30