首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >routes.LowercaseUrls和routes.AppendTrailingSlash不在MVC中工作。

routes.LowercaseUrls和routes.AppendTrailingSlash不在MVC中工作。
EN

Stack Overflow用户
提问于 2015-12-18 18:15:38
回答 2查看 2.9K关注 0票数 3

我正在开发mv4网站,

当我将这些命令写到RouteConfig中时,请告诉我为什么这些命令在我的应用程序中不做任何事情:

代码语言:javascript
复制
routes.LowercaseUrls = true;
routes.AppendTrailingSlash = true;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-14 20:43:05

首先,您需要通过一些@Html.ActionLink@Url.Action或类似的东西生成路由,才能让任何东西工作。这不是一颗魔法子弹。

来自MSDN:

AppendTrailingSlash

获取或设置一个值,该值指示在虚拟路径规范化时是否添加尾随斜线。

(来源

LowercaseUrls

获取或设置一个值,该值指示虚拟路径规范化时是否将URL转换为小写。

(来源

网址格式为(来源):

scheme://[user:password@]host[:port]path?query

这影响的部分是路径部分,并且只影响路径部分。任何查询字符串部分都不受影响。AppendTrailingSlash向路径部分的末尾添加一个/。

因此,对于这个代码:

代码语言:javascript
复制
@Html.ActionLink("About this Website", "About")

当路由参数设置为routes.LowercaseUrls = true;routes.AppendTrailingSlash = true;时,它将生成:

代码语言:javascript
复制
<a href="/home/about/">About this Website</a>

当路由参数设置为routes.LowercaseUrls = false;routes.AppendTrailingSlash = true;时,它将生成:

代码语言:javascript
复制
<a href="/Home/About/">About this Website</a>

当路由参数设置为routes.LowercaseUrls = true;routes.AppendTrailingSlash = false;时,它将生成:

代码语言:javascript
复制
<a href="/home/about">About this Website</a>

当路由参数设置为routes.LowercaseUrls = false;routes.AppendTrailingSlash = false;时,它将生成:

代码语言:javascript
复制
<a href="/Home/About">About this Website</a>

对于此代码:

代码语言:javascript
复制
@url.action("someAction","someController",new{Name=Test})

当路由参数设置为routes.LowercaseUrls = true;routes.AppendTrailingSlash = true;时,它将生成:

代码语言:javascript
复制
/somecontroller/someaction/?Name=Test

一些您可能会碰到的bug:

在MVC 4中有一个关于小写Urls的带区域的虫

NuGet包LowercaseRoutesMVC为修复此错误做了准备。

应用程序上小写URL的可能解决方案

如果您想要改变应用程序之外的行为,请考虑使用类似于Url重写的IIS,它可以转换您的URL。这个这里的例子。

票数 11
EN

Stack Overflow用户

发布于 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重写。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34361652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档