MVC3 фильтр глобальных предикатов - PullRequest
0 голосов
/ 04 октября 2011

Я создаю консоль администратора, и все контроллеры зависят от выпадающего списка для клиента.

Я хотел бы переместить этот выбор клиента в макет и сохранить его на всех контроллерах, чтобы вам не приходилось выбирать его везде.

Каков наилучший способ сделать это?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Я бы рассмотрел написание помощника HTML.Вы предполагаете, что все птицы могут летать, но однажды у вас есть другой исключительный сценарий, и вам больше не нужен этот выпадающий список.В качестве альтернативы включите его в частичное представление и визуализируйте его в том виде, в котором оно вам необходимо - это всего лишь одна дополнительная строка кода.

0 голосов
/ 04 октября 2011
  1. Переместите раскрывающийся список в свой _layout.cshtml.
  2. Создайте базовое представление, от которого будут наследоваться все представления, и дайте ему свойство для хранения клиентов и текущего клиента.
  3. Создатьметод BaseController, который будет заполнять экземпляр BaseView.
  4. Сохранение текущего выбранного клиента в вашем сеансе.
  5. Создание глобального фильтра и проверка всех представлений на предмет наследования BaseView.Если они это сделают, они могут преобразовать их в BaseView и затем заполнить свойства.
  6. Напишите некоторый код в _layout, который может использовать View для заполнения раскрывающегося списка.Я немного не в себе, поскольку мой коллега фактически выполнил эту часть, когда мы сделали нечто подобное.
  7. Когда пользователь изменяет значение раскрывающегося списка, вы можете использовать JSON для вызова метода действия, который обновит текущего клиента в сеансе.
...