12

私は何かに似たものを探しています

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

これをやってのけるために必要な最低限のコードは何ですか?

リックの例は、次のようなものを示しています

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

可能であれば、より簡潔な構文を好むでしょう。

注: より良いタイトルや説明を提案してください。編集権限がなくても、コミュニティのためにエントリを編集していただけると幸いです。

4

1 に答える 1

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>
于 2008-09-23T21:03:06.547 に答える