【问题标题】:asp.net mvc 4 Controller within a contollerasp.net mvc 4 控制器内的控制器
【发布时间】:2013-07-15 07:03:43
【问题描述】:

我可以在控制器中有一个控制器吗?

我已经有一个用户控制器,我现在想添加一个角色控制器,但我想从用户控制器中访问角色控制器,如下所示:/users/roles/index 而不是创建另一个控制器并通过它访问它/角色/索引

【问题讨论】:

    标签: asp.net-mvc routes


    【解决方案1】:

    如果您想保持典型的 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...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-04
      • 2014-06-01
      • 2023-04-05
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      相关资源
      最近更新 更多