Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用集合属性构建ASP.NET自定义控件?_Asp.net_Custom Server Controls - Fatal编程技术网

如何使用集合属性构建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自定义控件?”,因为对于使用声明性集合属性构建控件有一些解释,但很少有人解释如何将其设置为默认属性。