我的RouteConfig.cs 中有这个
routes.MapRoute(
name: "client1",
url: "client1/{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "client2",
url: "client2/{controller}/{action}",/* updated parent folder to match route name */
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这是我的看法。
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
当我运行应用程序时,它运行在http://localhost:50415/
然而ActionLinks呈现为:
{root}/client1
{root}/client1/Home/About
{root}/client1/Home/Contact
我的期望是actionlink呈现为这样:
{root}
{root}/Home/About
{root}/Home/Contact
那么,当我从http://localhost:50415/??
我做错了什么?
MVC中的路由规则按顺序处理。第一条规则是先匹配的规则。要解决此问题,只需重新排列代码中的规则即可。此外,您还可以通过使用约束条件将"客户端"规则分解为一个规则:
routes.MapRoute(
name: "client",
url: "{client}/{controller}/{action}",
defaults: new { controller = "Home", action = "Index" },
constraints: new { client = "client1|client2" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);