在asp.net mvc中,您可以轻松地从视图中调用/添加控制器,但是从控制器添加子控制器的最简单方法是什么。我得到的是我想从控制器本身动态构建一个子控制器列表,而不是从视图中。

我想到的模式来自旧的ibuyspy portal / dnn,在那里你想出了一个可插入页面的可插入模块列表。每个模块本身都是一个控制器,并且不知道它是一个子请求。但是,dnn使用ui / views来注入模块,就像我想在控制器中创建模块列表一样,然后告诉视图注入它们。

提前致谢,

杰西

有帮助吗?

解决方案

如果视图模型中有一个包含与所需模块相对应的信息的对象数组,则可以使用RenderAction将它们注入到视图中,如下所示:

<div id="LeftColumn">
    <% foreach (module in Model.Modules) { 
        Html.RenderAction(module.ActionName, module.ControllerName, new {id = module.id}); 
    } %>
</div>

RenderAction是一种在控制器上调用方法的方法,并将结果注入到调用RenderAction的位置的页面中。它是 ASP.NET MVC Futures程序集的一部分。

scroll top