我正在寻找类似于
的事情<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>
如果可能,我更喜欢更简洁的语法。
注意:请随意提出更好的标题或说明。即使您没有编辑权限,我也很乐意为社区编辑该条目。
答案 0 :(得分:17)
这是一个非常简单的示例控件,可以完全满足您的需求:
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>