【问题标题】:asp.net mvc: Dynamically add child/sub controllers from a controllerasp.net mvc:从控制器动态添加子/子控制器
【发布时间】:2009-09-14 03:36:31
【问题描述】:

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

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

提前致谢,

杰西

【问题讨论】:

    标签: c# asp.net-mvc view controller


    【解决方案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.的一部分

    【讨论】:

    • 啊,有道理。我想这很简单,我试图使问题复杂化。感谢您让我正确。
    • 如果我们不使用 MVC Future Assembly,还有其他选择吗?
    • 你可以试试 Subcontrollers 或 RenderPartial。但是 RenderAction 无论如何都会被包含在 MVC 框架 2.0 中。另见stackoverflow.com/questions/1214052/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    相关资源
    最近更新 更多