如何使用集合属性构建ASP.NET自定义控件?
我想做一些类似于如何使用集合属性构建ASP.NET自定义控件?,asp.net,custom-server-controls,Asp.net,Custom Server Controls,我想做一些类似于 <cstm:MyControl runat="server"> <myItem attr="something" /> <myItem attr="something" /> </cstm:MyControl> 实现这一点需要什么基本代码 Rick的例子显示了类似于 <cstm:MyControl runat="server"> <myItems> <cs
<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; }
}
}
namespace TestControl
{
[ParseChildren(true,DefaultProperty=“name”)]
公共类MyControl:Control
{
公共MyControl()
{
this.Names=新列表();
}
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
公共列表名称{get;set;}
}
公共类人名
{
公共字符串名称{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>
我建议将此标题改为“如何使用默认集合属性构建ASP.NET自定义控件?”,因为对于使用声明性集合属性构建控件有一些解释,但很少有人解释如何将其设置为默认属性。