代码之家  ›  专栏  ›  技术社区  ›  Display Name Camilo Terevinto

如何从母版页中动态列出现有的操作控制器?

  •  2
  • Display Name Camilo Terevinto  · 技术社区  · 16 年前

    在我的控制器文件夹中,我有:

    1. 带有动作索引等的HomeController。。。
    2. 带有操作索引、详细信息等的ProductController。。。
    3. 带有操作索引、编辑等的ServiceController。。。
    4. 一些带有索引、更新等操作的控制器。。。
    5. 等

    从我的内心站点.master,我想动态列出所有这些动作控制器。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    我完全同意达林的观点 response

    this

    您可以使用ViewData来动态存储OnActionExecuting中的所有控制器和操作。您必须创建一个新的控制器,所有其他控制器都将从中继承。

    public class ProductController : MyCustomController
    {
      ...
    }
    

    ...

    public class MyCustomController : Controller
    {
      protected override void OnActionExecuting(ActionExecutingContext filterContext)
      {
        base.OnActionExecuting(filterContext);
    
        //Some logic (not written) to reflect each of the controllers and actions. Probably something utilising IGrouping.
        var controllersActions = GetControllersActions();
    
        //Drop your collection into the ControllersActions.
        filterContext.Controller.ViewData.Add("ControllersActions", controllersActions);
      }
    }
    

    在母版页中。。。

    <% var controllersActions = ViewData["ControllersActions"]; %>
    
    ... outputting your controllers/actions ...
    
        2
  •  1
  •   Darin Dimitrov    16 年前

    从我的内心站点.master,我想动态列出所有这些动作控制器。