2010-08-17 6 views
0

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

Мое решение было использовать базовый класс Masterpage и переопределить OnPreInt событие так:

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

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

спасибо.

ответ

0

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

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

+0

Спасибо, Джон. Я действительно видел это раньше и никогда не смотрел, почему и что это было. Это хорошая идея и, похоже, облегчит некоторую путаницу в будущем, которую упомянул Koistya. Моя паранойя стихает. – trevorc

0

Это делает код/​​логику более сложной. Другие ребята, которые могут продолжить работу над проектом после вас, например, могут иметь проблемы с пониманием этого быстро. IMHO

+0

Это имеет смысл. В идеале я хотел бы удалить строго типизированную часть, но я не контролирую это. Это в основном облегчает тему. – trevorc

+0

Джо, я не вижу никаких проблем с вашим подходом, кроме простоты чтения. Вы также можете попробовать вникать в собственную тематику ASP.NET, но вполне возможно, что ваш подход будет более простым. –

+0

Не заходя в далекую тему, я просто нахожу это громоздким, чтобы попробовать и «подгонять» настраиваемую тему и макет к чужой разметке (главная страница). Мне нужна свобода дизайна макета/темы, используя мои собственные классы/id/etc и изменяя его, когда это необходимо. Спасибо за вход Koistya. – trevorc

0

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

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

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

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