Asp.net mvc .net mvc路由URL

Asp.net mvc .net mvc路由URL,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我在我的RouteConfig.cs里有这个 routes.MapRoute( name: "client1", url: "client1/{controller}/{action}", defaults: new { controller = "Home", action = "Index" } ); routes.MapRoute( name: "client2

我在我的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>
我的期望是ActionLink呈现如下:

{root}
{root}/Home/About
{root}/Home/Contact
那么,当我从运行时,为什么要为我的链接插入client1


我做错了什么?

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 }
);

这确实解决了我上面提到的问题,但当我转到它时,它告诉我无法找到资源。这个应用程序将有多个客户端,我希望它们中的大多数都使用带有客户端名称的URL。有没有办法解决这个问题?
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 }
);