MVC中如何使用多个路由

How to use multible routes in MVC

我有一个网站需要所有站点的 departmentID,所以我将默认路由重写为以下内容:

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

当您使用以下 URL 时它工作正常:

http://domain/2/Home/Index

或者简单地说:

http://domain/2

我的问题是,当我转到“http://domain/”时出现错误,因为我没有指定 departmentID。 我如何添加第二条路由,它会在您进入域时触发。

我尝试添加以下内容:

routes.MapRoute(
            name: "Start",
            url: "/",
            defaults: new { controller = "Department", action = "Select"}
        );

这是行不通的,因为您不能将“/”作为 URL。

我也试过添加默认路由,然后只更改默认对象:

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

这也不行。

你必须修改你的代码如下

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

        routes.MapRoute(
          name: "Department",
          url: "{deptID}/{controller}/{action}",
          defaults: new { controller = "Department", action = "Index"}
      );

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


    }

输出

如果以上代码仍然不适合您,请告诉我。