我的问题是: 网络表单上有一个按钮。它创建了5个文本框。 然后,在同一个Web表单上有另一个按钮。它从创建的textBoxes获取值并创建一些东西:
protected void Page_Load(object sender, EventArgs e) { }
TextBox[] textbox;
protected void Button1_Click(object sender, EventArgs e)
{
textbox = new TextBox[5];
for (int i = 0; i < 5; i++)
{
textbox[i] = new TextBox();
textbox[i].ID = "textbox[" + i + "]";
PlaceHolder1.Controls.Add(textbox[i]);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
string str = "";
for (int i = 0; i < 5; i++)
{
str += textbox[i].Text;
}
Label1.Text = str;
}
错误在Button2_Click文本框[i]为空。我理解为什么会发生这种情况,但我不明白我该如何解决这个问题。
答案 0 :(得分:2)
这是预期的行为。回发后,动态添加的控件将丢失。通常,您将在Session或viewstate中保留这些控件的信息,并在回发后重建这些控件。 Page_Load是重建它们的好地方。
您将找到许多关于如何保留控件及其数据的文章,只需使用"asp.net dynamically added controls are lost at postback"
进行搜索即可。
以下是您可以查看的示例:How to retain values of dynamically created controls in asp.net。这是另一个例子:Re: Dynamic Controls in Placeholder lossed after postback。
希望它有所帮助!