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

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

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

Спасибо

1 ответ

Решение

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

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

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

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

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

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

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