在我的ASP.NET MVC 4应用程序的RouteConfig
文件中,我注册了以下默认路由:
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "home", action = "index", id = UrlParameter.Optional });
现在,在我的Razor视图中,我想生成一个指向应用程序根目录的URL:
<a href="@Url.Action("index", "home")">Home</a>
生成的URL包含尾部斜杠;单击该链接将打开页面 localhost / IISApplicationName /。但是,我希望URL不包含尾部斜杠,以便URL为 localhost / IISApplicationName 。为其他操作生成路由(例如 / Account / Login )不会创建带有斜杠的URL - 它只是链接到应用程序根目录的路径。
有没有办法阻止ASP.NET MVC路由将尾部斜杠附加到上述路由?
(我知道我可以从包含斜杠的URL重定向到没有斜杠的URL,但我宁愿让路由首先生成正确的路由URL。)
答案 0 :(得分:1)
我建议使用网址重写出站规则。
示例配置:
<rewrite>
<outboundRules>
<rule name="RewriteSlash">
<match filterByTags="A" pattern="^/IISApplicationName/$" />
<action type="Rewrite" value="/IISApplicationName" />
</rule>
</outboundRules>
</rewrite>
答案 1 :(得分:0)
有没有办法阻止ASP.NET MVC路由追加 斜线到上面的路线?
当相对路径为空时,您应该传递一个尾部斜杠。如果您以某种方式生成带有href localhost/IISApplicationName
的链接,浏览器会在末尾附加一个“/”(您可以轻松地在firebug中验证这一点,只需在浏览器地址栏中输入http://stackoverflow.com,然后检查请求标签,您可以看到尾随“/”)。
这是因为根据HTTP / 1.1,
绝对路径不能是空的;如果原件中没有 URI,它被赋予“/”(服务器根目录)。
http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU(第5.1.2节)