C# 如何以编程方式在Web窗体asp.net中添加多个项

C# 如何以编程方式在Web窗体asp.net中添加多个项,c#,asp.net,C#,Asp.net,我尝试以编程方式添加标签、表格等项。。。在我的网络表单中。我尝试在按钮上单击创建一个事件,以便在每次单击时添加标签。但每一次,它都会停在一个标签上,然后在下一次点击中什么都不会发生 以下是我的代码,供那些希望看到我尝试的内容的人使用: protected void btn_Valid_Click(object sender, EventArgs e) { this.Page.Form.Controls.Add(new Label() { Text = "te

我尝试以编程方式添加标签、表格等项。。。在我的网络表单中。我尝试在按钮上单击创建一个事件,以便在每次单击时添加标签。但每一次,它都会停在一个标签上,然后在下一次点击中什么都不会发生

以下是我的代码,供那些希望看到我尝试的内容的人使用:

protected void btn_Valid_Click(object sender, EventArgs e)
    {
               this.Page.Form.Controls.Add(new Label() { Text = "test" });
    }

我们可以在asp.net中这样做,还是应该使用另一种语言,如javascript?

它只创建一个标签,因为在回发过程中丢失了一个标签。 在单击事件中,必须增加标签和/或其他控件的计数器,并在Page_Init中重新创建这些控件。每次页面发回时。记住ViewState中的计数器。
和往常一样,我推荐这篇关于

的文章给那些想要一个真正的anwser的人。按照这个步骤,它对我很有用:

在Page_Init或Page_Load中创建而不是实例化,因为对于每个事件,都会调用这些方法, 对于上面的示例,不要进行此类测试。例如,请尝试另一种方法,如将这些标签的数据存储在字符串数组中。下面是代码示例: 受保护的无效btn\u测试\u单击对象发送者,事件参数e{ tabLabel[count_tabLabel]=你好世界; //执行IFiscalback{}以避免跳过第一个标签 计数tabLabel++; }

在基本上写在.cs中的Page_Load函数中,或者通过创建下面的函数,执行循环将这些标签添加到Web表单中,如下所示: 受保护的无效页\初始化对象发送方,事件参数e{ 对于int i=0;i 事实上,页面是自动重新加载的,这就是asp页面的生命周期。因此,每次修改Web表单时,您都需要重新加载所有项目,如标签或更复杂的内容

希望有帮助


附言:

这不是一个真正的答案,远远不是。请告诉我们您的解决方案,不要随意造句。这不是一个哲学网站。无论如何,我忘记了IsCallBack测试,没有它,页面就不会显示标签的第一个实例。它在第一个标签和第二个标签之间留有一个间隙,因此它从第二个标签开始,并避免此解决方案的前一个标签。什么是tabLabel,它是如何声明和实例化的,它如何在请求之间保留其项?什么是计数标签和cpt标签?Page.Form.Controls.Add接受控件,而不是字符串。它不是IsCallBack-IsPostBack。绝对不要在页面加载中动态创建控件。这不是它们所属的位置,因为到那时,ViewState已经被处理过了。如果动态创建文本框并在其中键入内容,那么如果创建控件的时间太晚,那么在下次回发时,这些内容将丢失。顺便说一句,请详细说明真正的答案。@Alexander-Page_Load是最新的页面事件,因为可以创建动态控件,并且仍然可以从ViewState和Request获取它们的相关信息。