asp.net mvc: Agregue dinámicamente controladores secundarios / secundarios desde un controlador
-
07-07-2019 - |
Pregunta
En asp.net mvc, puede llamar / agregar fácilmente un controlador desde una vista, pero cuál es la forma más fácil de agregar hijos / subcontroladores desde un controlador. A lo que me refiero es a que quiero construir dinámicamente una lista de controladores secundarios desde el propio controlador, no desde la vista.
El patrón que tengo en mente se deriva del antiguo portal ibuyspy / dnn, en el que aparece una lista de módulos conectables que desea inyectar en la página. Cada módulo es, en sí mismo, un controlador, e ignora que es una solicitud secundaria. Pero, dnn usa el ui / views para inyectar los módulos, como donde quiero crear una lista de módulos en el controlador, luego le digo a la vista que los inyecte.
Gracias de antemano,
Jesse
Solución
Si tiene una matriz de objetos en su modelo de vista que contiene información correspondiente a los módulos deseados, puede inyectarlos en la vista usando RenderAction de esta manera:
<div id="LeftColumn">
<% foreach (module in Model.Modules) {
Html.RenderAction(module.ActionName, module.ControllerName, new {id = module.id});
} %>
</div>
RenderAction es un método que llama a un método en un controlador e inyecta el resultado en la página en la ubicación donde se llama RenderAction. Forma parte del ASP.NET MVC Futures.