2011-03-15 38 views
1

我需要建議!所以,我有,我寫頁腳在這裏定製控件的自定義中繼器的代碼:隱藏Asp中繼器的FooterTemplate

[ParseChildren(true)] 
[PersistenceMode(PersistenceMode.InnerProperty)] 
[DefaultProperty("Text")] 
[ToolboxData("<{0}:CustomRepeater runat=server></{0}:CustomRepeater>")] 
public class CustomRepeater : Repeater 
{ 
    [PersistenceMode(PersistenceMode.InnerDefaultProperty), 
    TemplateContainer(typeof(GuessFooterTemplate))]      
    private ITemplate FooterTemp {get; set;} 

    protected override void InitializeItem(RepeaterItem item) 
    { 
     base.InitializeItem(item); 
     FooterTemp = new GFooterTemplate(); 
     this.FooterTemplate = FooterTemp;          
    } 


    //Here I try to hide the footer template 
    [PersistenceMode(PersistenceMode.InnerDefaultProperty)] 
    public override ITemplate FooterTemplate 
    { 
     get 
     { 
      return base.FooterTemplate; 
     } 
     set 
     { 
      base.FooterTemplate = value; 
     } 
    } 


} 

internal class GFooterTemplate : ITemplate 
{ 
    PlaceHolder ph = new PlaceHolder(); 
    public void InstantiateIn(Control Container) 
    { 
     ph.Controls.Add(new LiteralControl("Test for Footertemplate")); 
     Container.Controls.Add(ph); 
    } 

} 

因此,作爲頁腳編程寫,我想隱藏誰使用自定義轉發別人的FooterTemplate。 。我在想[PersistenceMode(PersistenceMode.InnerDefaultProperty)]會這樣做,但顯然不是。有人有個想法嗎?

非常感謝

回答

1

如果我理解正確的話,你不希望你的CustomRepeater的用戶能夠修改FooterTemplate ...

我看到2個可能的解決方案:

使用new修改你的財產徹底重新定義它:

private new ITemplate FooterTemplate 
{ 
    get { return base.FooterTemplate; } 
    set { base.FooterTemplate = value; } 
} 

或修改二傳手做ñ othing,從而防止變形例:

public override ITemplate FooterTemplate 
{ 
    get 
    { 
    return base.FooterTemplate; 
    } 
    set 
    { 
    /* base.FooterTemplate = value; */ 
    } 
} 

HTH