Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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
如何动态生成ASP.NET用户控件的组合?_Asp.net_User Controls - Fatal编程技术网

如何动态生成ASP.NET用户控件的组合?

如何动态生成ASP.NET用户控件的组合?,asp.net,user-controls,Asp.net,User Controls,我有几个用户控件,比如A、B、C和D。基于一些随机输入,我需要生成这些控件的组合。例如,若输入为2a3d1a2c,我需要显示两个A,之后显示3D,再次显示A,等等 我还需要稳定clientid,以使其正常工作。因为每个控件都使用自己的ClientID属性来收集自己的输入。例如,对于用户控件,A在内部生成一个名为this.ClientID+$input1的输入,并从类似请求[this.ClientID+$input1]的请求中收集其输入。由于可以有多个A,每个A在回发后都需要具有相同的唯一Clie

我有几个用户控件,比如A、B、C和D。基于一些随机输入,我需要生成这些控件的组合。例如,若输入为2a3d1a2c,我需要显示两个A,之后显示3D,再次显示A,等等


我还需要稳定clientid,以使其正常工作。因为每个控件都使用自己的ClientID属性来收集自己的输入。例如,对于用户控件,A在内部生成一个名为this.ClientID+$input1的输入,并从类似请求[this.ClientID+$input1]的请求中收集其输入。由于可以有多个A,每个A在回发后都需要具有相同的唯一ClientID,以便从请求中获得正确的输入。

要动态添加控件,可以使用面板作为占位符,例如

<asp:Panel ID="ControlPlaceholder" runat="server" />

如果在Page_Load事件期间向其添加控件,并使用一致的方法生成控件ID,如上面的简单计数,则任何viewstate或事件绑定都将在回发时重新绑定到正确的对象。

如果有必要,它来自通过反序列化文件生成的类的属性:我将尝试您的解决方案,看看它是否有帮助。我对这个问题感到困惑。根据设计,回发时控件树必须与呈现页面时相同。您是否有理由每次都不能按照Page.Init中的顺序创建控件?框架生成的ClientID将是相同的。
int controlCount = 0;

...

TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);