【发布时间】:2008-10-02 09:17:57
【问题描述】:
我的基本问题是,在 .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 吗?
【问题讨论】: