如何在MVC中使用多重路由

时间:2019-04-09 11:29:03

标签: c# .net asp.net-mvc asp.net-mvc-4

我有一个网站,所有网站都需要一个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 }
        );

这也不起作用。

1 个答案:

答案 0 :(得分:1)

您必须按如下所示修改代码

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


    }

输出

Home URL Department URL with ID

让我知道上面的代码是否仍然对您不起作用。