为一个控制器创建多个路由
Posted
技术标签:
【中文标题】为一个控制器创建多个路由【英文标题】:Creating multiple routes for one controller 【发布时间】:2012-05-14 10:11:39 【问题描述】:我在尝试为我的一个控制器创建两条自定义路由时遇到问题。我有这两种情况:
-
如果有人导航到 /Register,它应该使用 Members 控制器和 Index 视图
如果有人导航到 /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
【参考方案1】:
你的路由是正确的。
我会验证您在成员控制器中有一个索引操作。
【讨论】:
【参考方案2】:我检查了场景,它工作正常。请验证一下。
-
您的 MembersController 类存在于 /Controller/ 中,它扩展了 Controller。
MembersController 包含一个不带参数或可为空参数的方法 Index。
索引操作方法没有 HTTPPOST 方法。[这可能会导致 404 错误。]
【讨论】:
以上是关于为一个控制器创建多个路由的主要内容,如果未能解决你的问题,请参考以下文章