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 конкретно упоминается, что это место для "создания или повторного создания динамических элементов управления".