我正在开发mv4网站,
当我将这些命令写到RouteConfig中时,请告诉我为什么这些命令在我的应用程序中不做任何事情:
routes.LowercaseUrls = true;
routes.AppendTrailingSlash = true;发布于 2016-01-14 20:43:05
首先,您需要通过一些@Html.ActionLink、@Url.Action或类似的东西生成路由,才能让任何东西工作。这不是一颗魔法子弹。
来自MSDN:
AppendTrailingSlash
获取或设置一个值,该值指示在虚拟路径规范化时是否添加尾随斜线。
(来源
LowercaseUrls
获取或设置一个值,该值指示虚拟路径规范化时是否将URL转换为小写。
(来源
网址格式为(来源):
scheme://[user:password@]host[:port]path?query
这影响的部分是路径部分,并且只影响路径部分。任何查询字符串部分都不受影响。AppendTrailingSlash向路径部分的末尾添加一个/。
因此,对于这个代码:
@Html.ActionLink("About this Website", "About")当路由参数设置为routes.LowercaseUrls = true;和routes.AppendTrailingSlash = true;时,它将生成:
<a href="/home/about/">About this Website</a>当路由参数设置为routes.LowercaseUrls = false;和routes.AppendTrailingSlash = true;时,它将生成:
<a href="/Home/About/">About this Website</a>当路由参数设置为routes.LowercaseUrls = true;和routes.AppendTrailingSlash = false;时,它将生成:
<a href="/home/about">About this Website</a>当路由参数设置为routes.LowercaseUrls = false;和routes.AppendTrailingSlash = false;时,它将生成:
<a href="/Home/About">About this Website</a>对于此代码:
@url.action("someAction","someController",new{Name=Test})当路由参数设置为routes.LowercaseUrls = true;和routes.AppendTrailingSlash = true;时,它将生成:
/somecontroller/someaction/?Name=Test一些您可能会碰到的bug:
在MVC 4中有一个关于小写Urls的带区域的虫。
NuGet包LowercaseRoutesMVC为修复此错误做了准备。
应用程序上小写URL的可能解决方案
如果您想要改变应用程序之外的行为,请考虑使用类似于Url重写的IIS,它可以转换您的URL。这个这里的例子。
发布于 2016-01-14 20:42:57
我想你搞不懂这些是做什么的。
在AppendTrailingSlash的情况下,它所做的只是在MVC生成的路由的末尾添加一个/。(https://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.appendtrailingslash(v=vs.110).aspx
类似地,当您使用LowercaseUrls时,MVC将生成所有小写的URLS。(https://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.lowercaseurls(v=vs.110).aspx
它们不会像您期望的那样在客户端进行URL重写。
https://stackoverflow.com/questions/34361652
复制相似问题