2009-09-14 2 views
1

В asp.net mvc вы можете легко вызвать/добавить контроллер из представления, но что является самым простым способом добавления дочерних/субконтроллеров из контроллера. Я хочу, чтобы я динамически создавал список дочерних контроллеров из самого контроллера, а не из представления.asp.net mvc: динамически добавлять дочерние/вспомогательные контроллеры с контроллера

Образец, который я имею в виду, получен из старого портала ibuyspy/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

+0

Есть ли альтернатива, если мы не используем MVC Future Assembly? – TimLeung

+1

Вы можете попробовать субконтроллеры или RenderPartial. Но RenderAction будет включен в MVC framework 2.0 в любом случае. См. Также http://stackoverflow.com/questions/1214052/should-i-use-areas-or-renderaction-in-asp-net-mvc/1214077 –

Смежные вопросы