【发布时间】:2013-07-15 07:03:43
【问题描述】:
我可以在控制器中有一个控制器吗?
我已经有一个用户控制器,我现在想添加一个角色控制器,但我想从用户控制器中访问角色控制器,如下所示:/users/roles/index 而不是创建另一个控制器并通过它访问它/角色/索引
【问题讨论】:
标签: asp.net-mvc routes
我可以在控制器中有一个控制器吗?
我已经有一个用户控制器,我现在想添加一个角色控制器,但我想从用户控制器中访问角色控制器,如下所示:/users/roles/index 而不是创建另一个控制器并通过它访问它/角色/索引
【问题讨论】:
标签: asp.net-mvc routes
如果您想保持典型的 REST 实现,那么我建议您避免这种情况,并为您的每个根模型(用户、角色等)分配一个控制器。
或者,如果您希望角色只能通过用户访问,作为嵌套资源(意味着您只想显示、更新、删除特定用户的角色),那么您可以像这样定义路由:
routes.MapRoute(
"RolesForUser", // Route name
"user/{userId}/{controller}/{action}/{id}",
new { controller = "roles", action = "index", id = UrlParameter.Optional}
);
因此,user/3/roles/index 的链接将带您进入角色控制器的索引操作,用于用户 3。
如果您的意图是将角色管理隐藏在 /user/ url 后面,那么我会更进一步,在您的 MVC 项目中创建一个用户(或管理员)Area(这就像右键单击一样简单在 Visual Studio 中的项目上并选择 Add -> Area...)
【讨论】: