Код пользовательского управления не выполняется до выполнения кода страницы

у меня есть главная страница, MasterPage1.master она содержит пользовательские элементы управления header, headercontent и footer. я написал код в пользовательском управлении headerconten

if(session["somesession"]==null)
{
Response.Redirect("Somepage.aspx");
}

проблема в том, что когда я открываю страницу с файлом главной страницы MasterPage1.master без входа в систему, т.е. session["somesession"]==null, тогда она выдает исключение нулевой ссылки для сеанса. Это нормально, потому что мой сеанс не имеет значения, поэтому он выдает исключение.

Мой вопрос:

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


person A_Sk    schedule 23.03.2015    source источник


Ответы (1)


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

  • Инициализировать

  • Загрузить состояние просмотра

  • Обработка данных обратной передачи

  • Загрузка — здесь asp.net создает дерево управления сервером, начиная со страницы.

  • Отправлять уведомления об изменении постбэка

  • Обработка событий обратной передачи

  • Пререндеринг

  • Сохранить состояние

  • Оказывать

  • Утилизировать

  • Разгрузить

    Вы можете проверить эту ссылку для получения дополнительной информации о жизненном цикле для asp.net

person Cesar Loachamin    schedule 23.03.2015
comment
Итак, вы говорите, что событие usercontrol's page_load будет выполняться после основного события page_load? - person A_Sk; 23.03.2015
comment
Да, это верно, и то же самое для других событий, таких как Render, например. - person Cesar Loachamin; 23.03.2015