没有创建我自己的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
创建了一些扩展方法,以使其易于使用此新的路由类。