Csharp/C#教程:你如何在C#.NET中“克隆”WebControls?分享


你如何在C#.NET中“克隆”WebControls?

我的基本问题是,在.NET中,如何克隆WebControls?

我想构建一个自定义标签,它可以生成其子项的多个副本。 最终我打算构建一个类似于JSP / Struts的标签。

但我遇到的第一个障碍是能够复制/克隆控件的内容。

考虑这个相当人为的例子;

 

Some html

输出的HTML标记是这样的,

 

Some html

Some html

注意:我知道我有重复的ID,我可以在以后找到解决方案!

所以我们将拥有3个孩子的自定义控件(我认为) – 一个文字控件,一个TextBox控件和另一个文字控件。

在这个例子中我说’count = 2’所以控件应该做的是输出/渲染它的孩子两次。

我希望做的是写一些“OnInit”代码,它代码如下:

 List 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?

使用Repeater和绑定dud数据源有什么问题。 它将复制模板化控件并处理ID创建和所有操作。

正如其他人真正想要克隆自定义服务器控件的参考

 public class MyCustomServerCtrl { ... public MyCustomServerCtrl Clone() { return MemberwiseClone() as MyCustomServerCtrl; } } 

但是请注意:这很少需要,如果是这样的话,很可能只是当你有一些非常具体的逻辑时。 应尽可能避免。 通常它应该足以使用现有的控件,如Repeater,ListView等。

在ASP.NET中执行此操作的方法是使用模板。 MSDN中有样本,只需查看模板化控件/ ITemplate。

WebControl.CopyBaseAttributes方法将AccessKey,Enabled,ToolTip,TabIndex和Attributes属性从指定的Web服务器控件复制到调用此方法的Web服务器控件。

MSDN文档

上述就是C#学习教程:你如何在C#.NET中“克隆”WebControls?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

www.ctvol.com true Article Csharp/C#教程:你如何在C#.NET中“克隆”WebControls?分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1002300.html

(0)
上一篇 2021年12月28日 上午6:33
下一篇 2021年12月28日 上午6:34

精彩推荐