2009-10-22 9 views
1

У меня есть две веб-части, которые общаются. Поставщик не может дать значение (RID) потребителю до по крайней мере события Page_Load поставщика. Таким образом, потребитель не может знать RID, в котором он нуждается, до тех пор, пока не будет Page_Load. Итак, я подключился к Page_LoadComplete. Теперь проблема. Потребитель создает динамические элементы управления, основанные на этом RID.Получение значения динамических элементов управления после Page_Load в C#?

Теперь. Эти динамически созданные элементы управления создаются после Page_Load. Таким образом, их viewstate не восстанавливается (динамические элементы управления, созданные внутри Page_Load, действительно восстанавливают свои значения).

Таким образом, в основном то, что мне нужно, это способ либо восстановить ViewState для управления вручную или получить значение элемента управления из переменной POST или эквивалент в C# ..

Кроме того, если бы я мог получить значение элемента управления в Page_Init, это тоже сработает.

ответ

2

Вся информация, возвращаемая из сообщения в парах ключа/значений Request.Form. Если вы проверите там и найдите идентификатор управления в ключах, вы можете получить значение, не просматривая состояние представления.

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

+0

На самом деле я только начал смотреть на это. Вы можете получить ClientID, но используя что-то вроде строкового значения = Request.Form.GetValues ​​(ddlMyControl.UniqueID) [0]; с [0] в конце, потому что он возвращает массив строк из 1 элемента. – Earlz

0

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

ViewState.Add("myRID", RID) 

Или вы можете сохранить его в SessionState, а не перегружать ViewState, так как ViewState имеет тенденцию становиться слишком большим в любом случае. Я бы пошел с SessionState.

Смежные вопросы