asp.net mvc: Ajout dynamique de contrôleurs enfants / sous-contrôleurs à partir d'un contrôleur
-
07-07-2019 - |
Question
Dans asp.net mvc, vous pouvez facilement appeler / ajouter un contrôleur depuis une vue, mais quel est le moyen le plus simple d’ajouter des enfants / sous-contrôleurs à partir d’un contrôleur. Ce que je veux dire, c’est que je veux créer de manière dynamique une liste de contrôleurs enfants à partir du contrôleur lui-même, et non de la vue.
Le modèle que j'ai à l'esprit est dérivé de l'ancien portail ibuyspy / dnn, dans lequel vous obtenez une liste de modules enfichables que vous souhaitez injecter dans la page. Chaque module est lui-même un contrôleur et ignore qu’il s’agit d’une requête enfant. Mais dnn utilise ui / views pour injecter les modules, comme pour créer une liste de modules dans le contrôleur, puis indiquez à la vue de les injecter.
Merci d'avance,
Jesse
La solution
Si votre modèle de vue contient un tableau d'objets contenant des informations correspondant aux modules souhaités, vous pouvez les injecter dans la vue à l'aide de RenderAction, comme suit:
<div id="LeftColumn">
<% foreach (module in Model.Modules) {
Html.RenderAction(module.ActionName, module.ControllerName, new {id = module.id});
} %>
</div>
RenderAction est une méthode qui appelle une méthode sur un contrôleur et injecte le résultat dans la page à l'emplacement où RenderAction est appelé. Il fait partie de Assemblée ASP.NET MVC Futures.