【问题标题】:Creating multiple routes for one controller为一个控制器创建多个路由
【发布时间】:2012-05-14 10:11:39
【问题描述】:

我在尝试为我的一个控制器创建两条自定义路由时遇到问题。我有这两种情况:

  1. 如果有人导航到 /Register,它应该使用 Members 控制器和 Index 视图
  2. 如果有人导航到 /Register/NY,它应该使用 Members 控制器和 Register 视图,并将状态代码作为参数传递

这是我的 global.asax 文件中的内容:

routes.MapRoute(
    "RegisterMap", // Route name
    "Register", // URL with parameters
    new { controller = "Members", action = "Index" } // Parameter defaults    
);

routes.MapRoute(
    "Register", // Route name
    "Register/{stateCode}", // URL with parameters
    new { controller = "Members", action = "Register" } // Parameter defaults       
);

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }    
);

如果我导航到 /Register/NY,一切正常,但如果我只导航到 /Register,我会收到 404 错误。

我做错了什么?

【问题讨论】:

  • 您是否尝试过"Register/",将/ 作为MapRoute 方法中的url 参数?好奇。
  • @Xander - 刚刚试过,没用。
  • 你能发布你所有的路线吗?
  • 提供的路线没有任何问题。您能否验证您在成员控制器中有索引操作?
  • grrrrrrrrrrrrrrr - 只需删除帖子@steven,让我们忘记这一切! ;D

标签: c# asp.net asp.net-mvc asp.net-mvc-3 routes


【解决方案1】:

你的路由是正确的。

我会验证您在成员控制器中有一个索引操作。

【讨论】:

    【解决方案2】:

    我检查了场景,它工作正常。请验证一下。

    1. 您的 MembersController 类存在于 /Controller/ 中,它扩展了 Controller。
    2. MembersController 包含一个不带参数或可为空参数的方法 Index。
    3. 索引操作方法没有 HTTPPOST 方法。[这可能会导致 404 错误。]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-21
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多