如何使用集合属性构建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>

