Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态添加的用户控件在asp.net中回发时消失_C#_Dynamic_User Controls - Fatal编程技术网

C# 动态添加的用户控件在asp.net中回发时消失

C# 动态添加的用户控件在asp.net中回发时消失,c#,dynamic,user-controls,C#,Dynamic,User Controls,我有一个asp.net列表框,如果它不是回发的,它将在Page_Load事件中填充。每当用户从asp.net列表框中选择任何项目时,我都需要根据从列表框中选择的项目数量加载UserControl。我已经能够加载多个控件;然而,我的问题是那些新添加的控件在回发时会消失 这是我的示例代码 if (!this.IsPostback) { bindListBox(); } private void bindListBox() { lstAgenyList .DataSource =

我有一个asp.net列表框,如果它不是回发的,它将在Page_Load事件中填充。每当用户从asp.net列表框中选择任何项目时,我都需要根据从列表框中选择的项目数量加载UserControl。我已经能够加载多个控件;然而,我的问题是那些新添加的控件在回发时会消失

这是我的示例代码

 if (!this.IsPostback)
    {
bindListBox();

    }

private void bindListBox()
{
lstAgenyList .DataSource = GetAgenyList();
lstAgenyList.DataTextField = "Id";
lstAgenyList.DataValueField = "Name";
lstAgenyList.DataBind();
}

protected void lstAgenyList_OnSelectedIndexChanged(object sender, EventArgs e)
{

foreach(Item in lstAgenyList.items) {
if(item.Selected)
{
addControls(item.Text, item.Value);
}
}

}

private void addControls(string itemName, string itemValue)
{
var control = this.LoadControl("~/Controls/a.ascx");
control.id= itemName.Trim() + itemValue + "Controls_";
this.agenyListPlaceHolder.Controls.add(control);

}

所以我的问题是,在asp.net web表单中实现这样的逻辑的最佳选项是什么。

它与占位符和动态添加的控件有关

几乎相同问题的答案如下:


基本上,placeholder中的所有内容都将在回发时丢失,您必须在PreInit事件期间从隐藏字段、Request.Form或ViewState重新添加回placeholder中。

控件将消失,因为我们有责任维护动态添加的控件的状态,您想尝试一下content place。

如果您在回答中包含了一些信息,并将链接用作次要来源,而不是仅包含链接,这将非常有用。