我需要建议!所以我有一个自定义转发器,我在自定义控件中编写页脚,这里是代码:
[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)]
会这样做,但显然不是。有人有想法吗?
非常感谢
答案 0 :(得分:1)
如果我理解正确,您不希望CustomRepeater
的用户能够修改FooterTemplate
...
我看到了两种可能的解决方案:
使用您的媒体资源上的new
修饰符完全重新定义它:
private new ITemplate FooterTemplate
{
get { return base.FooterTemplate; }
set { base.FooterTemplate = value; }
}
或者修改setter什么都不做,从而阻止修改:
public override ITemplate FooterTemplate
{
get
{
return base.FooterTemplate;
}
set
{
/* base.FooterTemplate = value; */
}
}
HTH