установка значения в MasterPage из UserControl

У меня такая ситуация:

Мастер-страница MyMaster.Master

Контентная страница Content.aspx

UserControl MyUserControl.ascx

MyUserControl.ascx используется в Content.aspx и добавляется программно. Страница содержимого использует MyMaster.Master

MyMaster.Master имеет переменную, к которой я могу получить доступ из Content.aspx, так как у меня установлена ​​директива @MasterType. Я хочу сделать следующее:

1) Установите значение в MyUserControl.ascx

2) Доступ к значению из Content.aspx

3) Установите значение в MyMaster.Master

Шаг 2 реализован в PageLoad content.aspx следующим образом:

Control ucControl= LoadControl("/UserControls/MyUserControl.ascx");
UserControls_MyUserControl myUC = ucControl as UserControls_MyUserControl;
//Do some caching stuff here
if (myUC != null)
    myUC.PreRender += new EventHandler(myUC_PreRender);

Обработчик PreRender просто устанавливает для MyMaster.Master значение true. В MyMaster.Master я проверяю это значение в PageLoad и пытаюсь отобразить что-нибудь, если оно истинно. Это не работает.

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

Любая помощь очень ценится.

Спасибо


person Peuge    schedule 17.02.2011    source источник


Ответы (1)


Просто событие PreRender происходит после события Load. Вы должны проверить переменную в событии, которое происходит после того, в котором вы установили переменную.

Вы можете увидеть порядок событий в цикле страниц здесь: ASP.NET Page Life Обзор цикла

person Guffa    schedule 17.02.2011