Почему динамические элементы управления ASP.NET могут сохранять ViewState даже при добавлении в Page_Load?

Я провел небольшое исследование, связанное с динамическими элементами управления и ViewState.

И я прочитал, что для того, чтобы сохранить ViewState для динамического элемента управления, вы должны добавить его в событие Page_Init. Это имеет смысл, потому что PageLifeCycle:

Инициализация.LoadViewState.LoadPostbackData.Загрузка.RaisePostbackEvent.SaveViewState.Render.

Но я сделал тестовое приложение и увидел, что значения ViewState и свойств сохраняются, даже если я добавляю элемент управления в событие Page_Load, а не после. С этого момента я нашел только противоречивую информацию. Некоторые говорят, что элементы управления могут догнать PageLifeCycle, другие говорят, что вы должны добавить их в Page_Init. Может кто-нибудь уточнить это для меня?

Также в MSDN я нашел:

Примечание. Возможно, вам удастся загрузить свои элементы управления в обработчике событий Page_Load и правильно поддерживать состояние просмотра. Все зависит от того, устанавливаете ли вы какие-либо свойства динамически загружаемых элементов управления программно и, если да, когда вы делаете это относительно строки Controls.Add (dynamicControl). Подробное обсуждение этого вопроса выходит за рамки данной статьи, но причина, по которой он может работать, заключается в том, что метод Add () свойства Controls рекурсивно загружает состояние представления родителя в его дочерние элементы, даже несмотря на то, что этап состояния загрузки представления пройден.

Но я не совсем понимаю это полностью, поэтому я надеюсь, что кто-то может это объяснить. Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос