Почему некоторые события в дочерних элементах управления запускаются в обратном порядке в цикле страниц ASP.Net? - PullRequest
2 голосов
/ 02 июня 2009

Из статьи Страница жизненного цикла ASP.Net на MSDN :

Хотя Init и Load рекурсивно встречаются на каждом элементе управления, они происходят в обратном порядке. Событие Init (а также событие Unload) для каждого дочернего элемента управления происходит до того, как соответствующее событие инициируется для его контейнера (снизу вверх). Однако событие Load для контейнера происходит до событий Load для его дочерних элементов управления (сверху вниз).

Это имеет большой смысл для события unload, но почему для init? А как насчет других событий?

С уважением,

1 Ответ

5 голосов
/ 08 июля 2009

Это связано с тем, как создаются эти страницы - пользовательские элементы управления являются свойствами класса страницы. Они создаются (и, следовательно, инициализируются) по мере инициализации класса, что обеспечивает доступность их экземпляров во время конструктора и события init страницы.

Затем, когда происходят события load, prerender и render, событие страницы запускается первым и каскадирует события для всего внутри нее.

Когда происходит выгрузка и утилизация, объекты свойств обрабатываются первыми.

Модель событий страницы WebForm слишком сложна, ИМХО.

...