【问题标题】:How to use multible routes in MVC如何在 MVC 中使用多个路由
【发布时间】:2019-04-09 11:29:02
【问题描述】:

我有一个网站需要所有网站的部门 ID,因此我将默认路由改写为以下内容:

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/”时出现错误,因为我没有指定部门 ID。 如何添加第二条路由,当您进入域时将触发该路由。

我已尝试添加以下内容:

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

这也不起作用。

【问题讨论】:

  • 您首先遇到什么错误?由于您在defaults 中为deptID 提供了默认值,因此您应该正确执行控制器操作。然后发布您的控制器和错误。
  • 这个链接解决了你的问题:Multiple Routes in MVC asp.net

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


【解决方案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 }
        );


    }

输出

如果上面的代码仍然不适合你,请告诉我。

【讨论】:

  • 它现在没有给我错误,但它调用 HomeController 而不是我在默认对象中设置的 DepartmentController。
  • 它有效。但看起来我什至不需要两条路线。我可以只使用主路由,然后确保默认操作不需要部门 ID 参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 2013-04-14
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
相关资源
最近更新 更多