Asp.net mvc 在MVC asp.net中注册多个路由

Asp.net mvc 在MVC asp.net中注册多个路由,asp.net-mvc,asp.net-mvc-routing,maproute,Asp.net Mvc,Asp.net Mvc Routing,Maproute,我想在MVC中映射几个参数顺序不同的路由: localhost:1010/abcd/home/index localhost:1010/home/index/abcd id=abcd controller=home action=index 我尝试了下面的代码,但不起作用 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"

我想在MVC中映射几个参数顺序不同的路由:

localhost:1010/abcd/home/index
localhost:1010/home/index/abcd

id=abcd
controller=home
action=index
我尝试了下面的代码,但不起作用

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "ShoppingManagment",
        "{id}/{controller}/{action}",
        new { controller = "ShoppingManagment",
            action = "ShoppingManagment", id = UrlParameter.Optional });


    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home",
            action = "Index", id = UrlParameter.Optional }
    );
}

这将不起作用,因为两条路由具有相同的格式

因此MVC路由引擎无法区分这两种url模式

尝试将控制器直接写入url模式

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
          "ShoppingManagment",
          "{id}/ShoppingManagment/{action}",
          new { controller="ShoppingManagment", action = "ShoppingManagment", id = UrlParameter.Optional });


        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home",
             action = "Index", id = UrlParameter.Optional }
        );

    }

您希望这些路由匹配多个控制器还是仅匹配ShoppingManagement?您的问题是,目前这两个路由定义都是相同的-string/string/string,因此它们都将由顶部路由拾取。我希望对特殊控制器使用第一种格式,而其他控制器使用第二种格式。我该怎么做?是的,通过在url模式中使用固定控制器创建第一条路由,您可以实现这一点。。。请参阅答案中的代码,它将“ShoppingManagement”控制器放入url模式中,因此无论哪个url将ShoppingManagement作为第二个参数,都将匹配此路由,其他url将匹配其他路由。我这样做了,但我得到了此错误“匹配的路由不包含“控制器”路由值,这是必需的。”请提供与第一条路由匹配的实际url。localhost:3681/ABCD/shoppingmanagement/shoppingmanagement/