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

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

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

  1. Инициализация.
  2. LoadViewState.
  3. LoadPostbackData.
  4. Загрузить.
  5. RaisePostbackEvent.
  6. SaveViewState.
  7. Визуализация.

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

Также в msdn я обнаружил:

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

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

8
задан m3s5 3 March 2012 в 20:15
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: