У меня есть пользовательский элемент управления, который содержит несколько кнопок, в зависимости от нажатой кнопки, на страницу добавляется другой элемент управления (скажем, кнопка 1 добавляет текстовое поле, кнопка 2 добавляет метку).
У меня есть код такой:
protected void but1_click(object sender, EventArgs e)
{
TextBox tb = new TextBox();
tb.ID = "tb1";
paramsCtrlDiv.Controls.Add(tb);
}
protected void but2_click(object sender, EventArgs e)
{
Label lb = new Label();
lb.ID = "lb1";
paramsCtrlDiv.Controls.Add(lb);
}
Затем у меня есть третья кнопка (кнопка3), чтобы получить все элементы управления на странице и их значения. (Предположим, что каждая кнопка нажимается только один раз для этого примера).
Моя проблема в том, что при нажатии кнопки 3 массив paramsCtrlDiv.controls не содержит добавленные элементы управления. Я знаю, что мне нужно добавить эти элементы управления во время каждой обратной передачи. Моя проблема в том, что я не знаю точно, какие элементы управления добавил пользователь. Я не знаю, что я хочу добавить Page_Load (там может быть текстовое поле, затем метка, просто метка или просто таблица символов), я могу не управляйте тем, что нажимает пользователь.
Я знаю, что могу хранить все в сеансе, но я не уверен, что это элегантное решение. Также может быть несколько экземпляров этого элемента управления на разных вкладках, поэтому каждый из них должен правильно поддерживать свою собственную коллекцию элементов управления