如何使用集合属性构建ASP.NET自定义控件?
时间:2020-03-06 14:37:29 来源:igfitidea点击:
我正在寻找类似的东西
<cstm:MyControl runat="server"> <myItem attr="something" /> <myItem attr="something" /> </cstm:MyControl>
实现这一目标所需的基本代码是什么?
里克(Rick)的例子表明了类似的东西
<cstm:MyControl runat="server"> <myItems> <cstm:myItem attr="something" /> <cstm:myItem attr="something" /> </myItems> </cstm:MyControl>
如果可能的话,我希望使用更简洁的语法。
注意:请随意提出更好的标题或者描述。即使我们没有编辑权限,我也很高兴为社区而编辑条目。
解决方案
这是一个非常简单的示例控件,可以完全满足需求:
namespace TestControl { [ParseChildren(true, DefaultProperty = "Names")] public class MyControl : Control { public MyControl() { this.Names = new List<PersonName>(); } [PersistenceMode(PersistenceMode.InnerDefaultProperty)] public List<PersonName> Names { get; set; } } public class PersonName { public string Name { get; set; } } }
并且,这是一个示例用法:
<%@ Register Namespace="TestControl" TagPrefix="TestControl" %> <TestControl:MyControl runat="server" ID="MyControl1"> <TestControl:PersonName Name="Chris"></TestControl:PersonName> <TestControl:PersonName Name="John"></TestControl:PersonName> </TestControl:MyControl>