Динамическое назначение главных страниц с использованием MVC - PullRequest
3 голосов
/ 20 октября 2008

При использовании веб-форм подходящим местом для динамического присвоения главных страниц странице является событие PreInit страниц:

this.Master.MasterPageFile = "~/leaf.Master"

Если необходимо, главные страницы в иерархии вложенных главных страниц также могут быть установлены здесь:

this.Master.MasterPageFile = "~/leaf.Master"
this.Master.Master.MasterPageFile = "~/root.Master"

Используя инфраструктуру MVC, вы можете динамически установить одно имя главной страницы, используя метод View контроллеров, передав masterName , но как вы установите другие главные страницы выше в иерархии?

Обновление
Извините, мне было непонятно.

Под иерархией я подразумеваю цепочку вложенных главных страниц, так как я могу установить самую верхнюю главную страницу в цепочке вложенных главных страниц?

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

Ответы [ 2 ]

3 голосов
/ 20 октября 2008

Не совсем понятно, что вы подразумеваете под «выше в иерархии», но если вы имеете в виду «в одном месте, а не в каждом контроллере, который я создаю», я могу подумать о двух вариантах:

  1. Создайте абстрактный тип контроллера и создайте подкласс для ваших конкретных контроллеров.

  2. Создание фабрики контроллеров (подкласс DefaultControllerFactory) и переопределение CreateController для установки пользовательского свойства MasterPage.

Если вы выберете последнее решение, вам нужно сделать это в Global.asax:

  ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
1 голос
/ 20 октября 2008

В MVC сегодня нет возможности для этого.

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