Заполните ViewBag в Layout View - PullRequest
       4

Заполните ViewBag в Layout View

2 голосов
/ 15 декабря 2011

Использование ASP.Net MVC3 с C #

У меня на странице макета есть вращающаяся реклама.Это заполнено ViewBag, содержащим случайное объявление.Единственная проблема заключается в том, что мне нужно буквально включать код в виде базы данных в каждом контроллере и действие, чтобы заставить его работать на каждой странице.

Есть ли способ заполнить ViewBag независимо от того, какой контроллер или какое действие я выполняю?

Ответы [ 3 ]

7 голосов
/ 15 декабря 2011

Я думаю, вы могли бы создать BaseController, который все ваши контроллеры могут унаследовать, который обрабатывает это для вас. Затем вы можете переопределить событие OnActionExecuting BaseController и загрузить объявление в ViewBag.

1 голос
/ 15 декабря 2011

Один из способов - создать базовый класс (abstract?) Для всех ваших контроллеров и добавить его в ViewBag при необходимости (например, путем переопределения ControllerBase.Execute).

Другим способом было бы создать глобальный фильтр действий , который делает то же самое.

0 голосов
/ 15 декабря 2011

ViewBag является членом базового класса контроллера, поэтому вы можете обращаться к нему любым методом.Таким образом, вы можете настроить общую функцию, которая заполняет ее, и затем вызывать ее из реальных методов действия:

private void PopulateViewBag() {
    ViewBag.SomeThing = SomeOtherThing();
}

Методы на контроллере не имеют быть действиями, это простокласс в конце концов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...