我有一个包含多个按钮的用户控件,根据按下的按钮,页面中会添加一个不同的控件(假设按钮 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);
}
然后我有第三个按钮 (button3) 来获取页面上的所有控件及其值。(假设此示例中每个按钮仅单击一次)。
我的问题是按下 button3 时 paramsCtrlDiv.controls 数组不包含已添加的控件。我知道我需要在每次回发的 Page_Load 时间添加这些控件。我的问题是因为我不知道用户添加了哪些控件我不知道我想添加什么 Page_Load(可能有一个文本框,然后是标签,只是一个标签或只是一个 tb),我可以'不控制用户按下什么。
我知道我可以将所有内容存储在会话中,但我不确定这是一个优雅的解决方案。在不同的选项卡上也可以有多个此控件的实例,因此每个实例都必须正确维护自己的控件集合