你如何构建一个集合属性的ASP.NET自定义控件? [英] How do you build an ASP.NET custom control with a collection property?

查看:130
本文介绍了你如何构建一个集合属性的ASP.NET自定义控件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望做一些类似于

<cstm:MyControl runat="server">
    <myItem attr="something" />
    <myItem attr="something" />
</cstm:MyControl>

什么是退出这个功能所需要的基本框架code?

What's the bare bones code needed to pull this off?

Rick的例子显示了一个类似于

Rick's example shows something akin to

<cstm:MyControl runat="server">
    <myItems>
        <cstm:myItem attr="something" />
        <cstm:myItem attr="something" />
    </myItems>
</cstm:MyControl>

我preFER更简洁的语法如果可能的话。

I'd prefer the more terse syntax if possible.

注:随意提出一个更好的标题或说明。即使你没有编辑权限,我很高兴来编辑为社会着想的条目。

推荐答案

下面是一个非常简单的例子控件,不正是你要找的:

Here's a really simple example control that does exactly what you are looking for:

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; }
    }
}

和,下面是一个例子用法:

And, here is an example usage:

<%@ 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自定义控件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆