问题更新
我正在使用这段代码在按钮点击时添加多个标签。 但是每次它给出计数值0并且在执行之后只有相同的标签出现。
int count = (int)ViewState["count"];
for (int i = 0; i <= count; i++)
{
TextBox txtnew = new TextBox();
txtnew.ID = "label_" + (i + 1);
txtnew.Text = "label_" + (i + 1);
ViewState["count"] = i;
pnlControl.Controls.Add(txtnew);
}
ViewState["count"] = count + 1;
我现在想要的是如何以更方便的方式保持每个控件的数据绑定到它。
答案 0 :(得分:1)
这导致它成为Web应用程序,因此会话未被保留,因为Web应用程序本质上是无状态的。因此,每个帖子都会有一个新的页面实例,其中<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
为int count
。解决方案:使用0
存储数据以供将来重复使用,如
Session
在回发请求中检索它
int count = pnlControl.Controls.OfType<Label>().ToList().Count;
Session["count"] = count;
答案 1 :(得分:1)
每个PostBack都会丢失动态控件,因此您需要在某处跟踪创建的动态控件,并在重新加载页面时重新创建它们。
请在此处查看我的答案:How to dynamically create ASP.net controls within dynamically created ASP.net controls
关于按钮,但基本原理是一样的。只需将Button替换为Label即可使用。