Потребителският контролен код не се изпълнява преди изпълнението на кода на страницата

имам основна страница, MasterPage1.master тя съдържа потребителски контроли header,headercontent и footer. Написах код в headerconten usercontrol

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