2009-09-14 147 views
1

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

我想到的模式来自旧ibuyspy portal/dnn,您可以在其中找到要插入页面的可插入模块列表。每个模块本身就是一个控制器,并且不知道它是一个小孩请求。但是,dnn使用ui/views来注入模块,因为我想在控制器中创建模块列表,然后告诉视图注入它们。

由于提前,

杰西

回答

1

如果您在您的视图模型对象的数组包含对应于所需模块的信息,您可以使用的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 assembly.的一部分

+0

啊,这是有道理的。我想这很简单,我试图让问题复杂化。感谢您设置我的权利。 – jf26028 2009-09-14 08:36:26

+0

如果我们不使用MVC Future Assembly,是否有其他选择? – TimLeung 2009-09-14 14:38:27

+1

你可以尝试Subcontrollers或RenderPartial。但RenderAction无论如何都将被包含在MVC框架2.0中。另见http://stackoverflow.com/questions/1214052/should-i-use-areas-or-renderaction-in-asp-net-mvc/1214077 – 2009-09-14 14:47:30