2009-04-06 1 views
0

У меня есть главная страница, которая устанавливается через HTTPModule на PreInit(). СЧАСТЛИВОЕ ВРЕМЯ! Проблема в том, что мне нужно переопределить значение masterpagefile на нескольких страницах из-за проблемы с макетом. Кто-нибудь знает лучший способ?переопределение главного модуля

Я попытался добавить страницу_Preinit на свою страницу, но она выполняется перед PreInit() в моем модуле, поэтому она заканчивается тем, что там сброшена. Я думаю, может быть, мне следует обновить контекстную переменную на моей странице (что-то вроде masterSetAtPage, которое я мог бы отключить в своем модуле). Есть ли какие-то мысли по этому поводу?

Я работаю в VB.Net, но пример C# также будет прекрасен.

+0

Можете ли вы обновить код PreInit, чтобы указать требуемую страницу мастера, или требуется ли обновление главной страницы на основе загружаемого содержимого? –

+0

Можете ли вы описать, что вы хотите сделать? Большим препятствием, как правило, становится PreInit, чтобы успешно установить Masterpage, почему бы просто не установить ее или установить ее на другую? – JoshJordan

ответ

1

Предположительно ваш текущий код выглядит немного как код, описанный здесь ...

http://www.odetocode.com/articles/450.aspx

Если да, то вы можете изменить свой код, который перехватывает вверх PreInit смотреть что-то вроде этого ...

if (page != null && String.IsNullOrEmpty(page.MasterPageFile)) 
{ 
    page.MasterPageFile = "~/Master1.master"; 
} 

и потом любая страница, которая использует собственную директиву страницы, чтобы установить MasterPageFile будет избежать подключил к главной странице «по умолчанию».

Если вам нужно сделать это программно, то этот код ...

protected override void OnPreInit(EventArgs e) 
{ 
    base.OnPreInit(e); 
    this.MasterPageFile = "cheese.master"; 
} 

... в коде страницы за будет делать трюк. Очевидно, что этот код будет добавлен только на страницы, где требуется специальное поведение.

+0

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

+0

ОК, так что это делается ... защищенный переопределить пустоту OnPreInit (EventArgs e) { base.OnPreInit (e); это.MasterPageFile = "cheese.master"; } ... на вашей странице должно работать. Я знаю, что это в значительной степени то, что предложил Марк (выше), хотя он показал OnInit, а не OnPreInit. –

+0

@Martin - да, я так пошевелился. ;) PreInit - это правильное место. –

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

  • Нет связанных вопросов^_^