2008-09-23 105 views
12

我在找做如何使用集合屬性構建ASP.NET自定義控件?

<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自定義控件?」,因爲有關於使用聲明性集合屬性構建控件的一些解釋,但很少解釋如何使其成爲默認屬性。 – 2008-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> 
相關問題