2011-03-15 33 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