C# 将多个控件添加到asp页面

C# 将多个控件添加到asp页面,c#,asp.net,controls,C#,Asp.net,Controls,我试图在单击按钮时向页面添加一组控件。我需要多次添加同一组控件,可能是无限次。当前“添加控件”按钮单击工作,当您在第2、3、4…等时间单击时,它无法正常工作。它覆盖并替换当前页面上的控件,因此只显示一组控件 这是我创建和添加控件的代码,这发生在单击事件中 Label contactTypeLabel = new Label(); contactTypeLabel.Text = "Contact Type" + contactCount.ToString();

我试图在单击按钮时向页面添加一组控件。我需要多次添加同一组控件,可能是无限次。当前“添加控件”按钮单击工作,当您在第2、3、4…等时间单击时,它无法正常工作。它覆盖并替换当前页面上的控件,因此只显示一组控件

这是我创建和添加控件的代码,这发生在单击事件中

        Label contactTypeLabel = new Label();
        contactTypeLabel.Text = "Contact Type" + contactCount.ToString();
        contactTypeLabel.ID = "contactLabel" + contactCount.ToString();
        this.panelContacts.Controls.Add(contactTypeLabel);
        DropDownList contactTypeDropDownList = new DropDownList();
        //loading dropdown
        this.panelContacts.Controls.Add(contactTypeDropDownList);
        this.panelContacts.Controls.Add(new LiteralControl("<br />"));
Label contactTypeLabel=新标签();
contactTypeLabel.Text=“Contact Type”+contactCount.ToString();
contactTypeLabel.ID=“contactLabel”+contactCount.ToString();
此.panelContacts.Controls.Add(contactTypeLabel);
DropDownList contactTypeDropDownList=新的DropDownList();
//加载下拉列表
此.panelContacts.Controls.Add(contactTypeDropDownList);
this.panelContacts.Controls.Add(新的LiteralControl(“
”);
这是我的控件要添加到的面板

<asp:UpdatePanel ID="UpdateContacts" runat="server">
                <ContentTemplate>
                    <asp:Panel ID="panelContacts" runat="server">

                    </asp:Panel>

                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="btnAddContacts" EventName="Click" />
                </Triggers>
            </asp:UpdatePanel>


我最后做的是使用jQuery创建/删除控件。工作得更好更容易

您需要了解ASP.NET的工作原理。这不是一个bug或类似的问题,只是你不知道它是如何工作的。每次加载页面时,都必须添加所有这些控件。你需要添加那些以前在那里的人,以及“新”的人。当您单击按钮重新创建页面时,每次回发都需要保持某种状态。 必须通过在会话或视图状态中的列表或类似内容中添加控件来保持页面的状态


因此,当页面加载发生时,您可以再次添加控件。

我相信中继器是您最好的选择

它允许您动态添加所需asp.net控件的新行


希望这能有所帮助,

可能的重复就是我被否决而不是被关闭的原因。.没有选择的答案