コレクションプロパティを使用してASP.NETカスタムコントロールを作成するにはどうすればよいですか?


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> 

に似て何かを示しています。

注:気に入ったタイトルや説明があります。あなたが編集権を持っていなくても、私はコミュニティのためにエントリを編集してうれしいです。

  0

へ宣言的なコレクションプロパティを持つコントロールを構築する方法についてはいくつか説明していますが、デフォルトのプロパティにする方法についてはほとんど説明していないため、「デフォルトのコレクションプロパティを使用してASP.NETカスタムコントロールを作成する方法」を参照してください。 23 9月. 082008-09-23 21:10:07

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> 
私はこれのタイトルを変更することをお勧め