2008-09-23 17 views
12

BenBir toplama özelliğiyle ASP.NET özel denetimini nasıl kurarsınız?

bu işi için gerekli çıplak kemikleri kodu nedir
<cstm:MyControl runat="server"> 
    <myItem attr="something" /> 
    <myItem attr="something" /> 
</cstm:MyControl> 

benzer bir şey yapmak arıyorum? Rick'in örnek

Ben daha kısa ve öz sözdizimi mümkünse tercih ediyorum

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

benzer bir şey gösteriyor.

Not: Daha iyi bir başlık veya açıklama önermek için çekinmeyin. Düzenleme haklarınız olmasa bile, topluluğun iyiliği için girişi düzenlemekten memnuniyet duyarız.

+0

için "Bir varsayılan toplama özelliği ile bir ASP.NET özel denetimini nasıl kurarsınız?", çünkü bildirimsel bir toplama özelliğine sahip bir denetim oluşturmaya ilişkin birkaç açıklama olduğu için, ancak bunun varsayılan özelliği nasıl yapılacağını açıklayamıyor. –

cevap

17

İşte aradığınız yok tam olarak ne gerçekten basit bir örnek kontrolü var:

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

Ve aşağıda bir örnek kullanım şöyledir:

<%@ 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> 
bu unvanı değişen öneririm
İlgili konular