ASP.NET: Viewstate и программное добавление пользовательских элементов управления

при программном добавлении пользовательских элементов управления с помощью LoadControl (string path), когда в жизненном цикле страницы пользовательского элемента управления он инициализирует свои подконтрольные элементы с помощью viewstate?

Я задаю этот вопрос, потому что один из моих пользовательских элементов управления, который программно загружается, имеет элемент управления TextBox, который не инициализируется/загружается его viewstate при обратной передаче события Page_Load (что не относится к обычному .aspx страницы и, следовательно, моя путаница). В Целом, I необходимо получить значения из элемента управления Textbox.

спасибо

1 ответов


ViewState загружен до события page_load. Если вы хотите, чтобы ваш элемент управления работал с ViewState, вам нужно загрузить его и добавить на страницу до этого события - обычно на PreInit.

ссылка жизненного цикла здесь:
http://msdn.microsoft.com/en-us/library/ms178472.aspx?ppud=4

читать Pre Load событие, которое непосредственно предшествует загрузки страницы:

использовать это событие, если вам нужно для выполнения обработки на странице или управления перед событием загрузки.

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

таким образом, по времени предварительной загрузки уже слишком поздно. Кроме того, в описании события PreInit конкретно упоминается, что это место для "создания или повторного создания динамических элементов управления."