gpt4 book ai didi

asp.net - 在 ASP.NET 中动态添加元素

转载 作者:行者123 更新时间:2023-12-02 00:16:15 25 4
gpt4 key购买 nike

看这段代码:

        static int i = 0;
protected void Page_Load(object sender, EventArgs e)
{
HtmlButton myButton;
if (!Page.IsPostBack)
{
myButton = new HtmlButton();
myButton.InnerText = "Button first load";
myButton.ID = i.ToString();
PlaceHolder1.Controls.Add(myButton);
i++;
}
else
{
myButton = new HtmlButton();
myButton.InnerText = "Button postback" + i.ToString();
myButton.ID = i.ToString();
PlaceHolder1.Controls.Add(myButton);
i++;
}
}

预期:

       first load:  "Button first load"
first postback: first load + "Button postback1"
second postback: first postback + "Button postback2" ... and so on.

有:

      "Button first load"
"Button postback1"
"Button postback2".

为什么?

最佳答案

你的预期结果真的错了......:)

现在发生的正是您在代码中编写的内容:

第一次加载(不是回发):

 myButton.InnerText = "Button first load";

然后:

"Button first load"

第 2、3、n 次加载(回发):

 myButton.InnerText = "Button postback" + i.ToString();

然后:

"Button postback1"
"Button postback2"
.
.
.

更新:

现在我明白了你的问题......

ASP.NET 不会保留动态控件的状态,因此无法在回发后重新创建它们。

底线:您必须在每次回发后重新创建动态添加的控件。

这是我 2 多年前给出的一个答案,向您展示了处理这种情况的好方法:

https://stackoverflow.com/a/2982271/114029

关于asp.net - 在 ASP.NET 中动态添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com