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

Ahm*_*mad 2 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}");

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

    }
Run Code Online (Sandbox Code Playgroud)

Vir*_*rus 12

它不起作用,因为两个路由具有相同的格式.

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

尝试将Controller直接写入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 }
        );

    }
Run Code Online (Sandbox Code Playgroud)