我的基本问题是,在 .NET 中,如何克隆 WebControls?
我想构建一个自定义标签,它可以生成其子代的多个副本。
最终我打算构建一个类似于 JSP/Struts 中的标签。
但我遇到的第一个障碍是复制/克隆控件内容的能力。
考虑一下这个相当做作的例子;
<custom:duplicate count="2">
<div>
<p>Some html</p>
<asp:TextBox id="tb1" runat="server" />
</div>
</custom:duplicate>
输出的 HTML 标记类似于:
<div>
<p>Some html</p>
<input type="text" id="tb1" />
</div>
<div>
<p>Some html</p>
<input type="text" id="tb1" />
</div>
注意:我知道我的 ID 重复了,稍后我可以想出一个解决方案!
因此,我们将拥有的是带有 3 个子级的自定义控件(我认为)——一个文字控件、一个 TextBox 控件和另一个文字控件。
在这个例子中,我已经说过“count=2”,所以控件应该做的是输出/渲染它的子元素两次。
我希望做的是编写一些“OnInit”代码,其功能如下:
List<WebControl> clones;
for(int i=1; i<count; i++)
{
foreach(WebControl c in Controls)
{
WebControl clone = c.Clone();
clones.Add(clone);
}
}
Controls.AddRange(clones);
但是,据我所知,WebControls 没有实现 ICloneable,因此不可能以这种方式克隆它们。
关于如何克隆 WebControls 有什么想法吗?