Переопределить строго типизированный @page masterpagefile - PullRequest
0 голосов
/ 18 августа 2010

Я работаю с сторонним приложением asp.net, которое использует главные страницы и вложенные главные страницы.Мои потребности - динамически устанавливать файлы главной страницы для каждой страницы (.aspx).Приложение по умолчанию устанавливает файл главной страницы в строго типизированной директиве @Page для каждой страницы.Я не хочу менять строго типизированную директиву на каждой странице (более 50 страниц), потому что я ленив и хочу минимизировать конфликты с будущими обновлениями.

Мое решение состояло в том, чтобы использовать базовый класс главной страницы и переопределитьсобытие OnPreInt вроде этого:

protected override void OnPreInit(EventArgs e)
    {
    this.MasterPageFile = "~/MasterPages/MyMaster.master";
    }

Все работает отлично.Мой вопрос: это плохая идея и почему?Это кажется слишком простым, чтобы быть правдой.

спасибо.

Ответы [ 3 ]

0 голосов
/ 18 августа 2010

Это должно работать без проблем.MasterPage не применяется к коллекции элементов управления до OnPreInit.Единственные возможные проблемы, с которыми я сталкиваюсь, это то, что

1) Ваши разработчики должны будут помнить, что это переключение происходит (технический долг)

2) Вам придется загружать оба класса MasterPage каждыйвремя запроса страницы (проблема производительности)

0 голосов
/ 18 августа 2010

Это очень хорошая идея.Половина главных страниц в том, что вы можете сделать это.

Одна неприятная вещь о них - это то, что вы не можете заставить их начать ссылаться на несуществующий файл (что сделает его более понятным, когда вывсегда собираюсь выбрать мастер в программном плане), поэтому, если я собираюсь всегда устанавливать для него что-то новое, мне бы хотелось, чтобы он начинался со страницы, на которой просто написано «Макетная главная страница, это будет перемещено из программно», так что этоЯсно, что это происходит с каждым, кто отслеживает мастер-страницу, используемую страницей.

0 голосов
/ 18 августа 2010

Это делает код / ​​логику более сложным.У других ребят, которые могут продолжить работу над проектом после вас, например, могут быть проблемы с его быстрым пониманием.ИМХО

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