2015-02-26 4 views
-1

У меня есть метод внутри контроллера, который создает ViewData. Например, этотСоздать ViewData вне Controler в MVC

private void CreateFKViewData(OSQDCOL osqdcol, OSADCOL osadcol, IList<OSADCOL> targetTBLcols) 
{ 
     ... 
ViewData[osadcol.ColName] = new SelectList(SelectListItems, "key", "value", SelectListItems.First().Key); 
} 

Если этот метод установлен внутри контроллера, все работает так, как ожидалось. Я хочу переместить этот метод вне моего контроллера и поместить его в другой класс в моем BLL-слое. Проблема заключается в том, что ViewData недоступна вне области действия контроллера.

Любые идеи?

ответ

1

Я предполагаю, что вы используете ASP.NET MVC и C#. Не уверен, что это отличная идея распространить вокруг опасений, что контроллер обычно будет делать классы за пределами контроллера, но достаточно сказать, что причиной вашей проблемы является то, что ViewData становится доступным из-за того, что ваш класс контроллера наследуется от контроллера, который в свою очередь, наследуется от ControllerBase (где предоставляется ViewData). Итак, скажем, вы хотели вызвать метод из другого класса с вашего контроллера, и вы хотели, чтобы этот метод мог управлять ViewData. Учитывайте следующее:

+0

Это похоже на работу, но как я могу изменить это, чтобы работать с использованием инъекции зависимостей и особенно автозапуска? –

+0

Хорошо, что это зависит от того, как вы используете DI в отношении ваших контроллеров? В примере, который я дал, вы могли бы использовать свой IoC в том, что ему нужно, в конструкторе вашего контроллера, а затем делать то, что вам нужно оттуда, таким же образом. Если это не сработает для вас, вы можете не использовать конструкцию ViewData и вместо этого использовать шаблон ViewModel. –

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

  • Нет связанных вопросов^_^