我有几个用户控件,比方说 A, B, CD. 。基于一些随机输入,我需要生成这些的组合。例如如果输入是 2a3d1a2c 我需要显示两个 A,之后显示 3 个 D,再显示一个 A,等等。

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

有帮助吗?

解决方案

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

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

然后,在服务器端,您可以向其中添加对象,如下所示:

int controlCount = 0;

...

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top