我有一个带占位符控件的母版页。
我有一个继承自母版页的页面。
然后我有一个自定义控件显示在页面上,这个自定义控件有一个强制转换到母版页,所以我可以访问占位符控件来打开和关闭可见性。当我在调试器中观察它时,一切都按预期工作,但占位符控件无法关闭它的可见性。
我觉得这可以按照事件触发的顺序来做。在主页已经呈现之后,页面上的自定义控件中的任何代码都会被触发。
是否有人知道如何影响此页面的呈现方式,以便自定义控件可以打开和关闭占位符?
控件中的代码如下所示;
protected override void Render(HtmlTextWriter writer)
{
var master = this.Page.Master as Site;
if (master != null) // cast failed, your master is a different type
{
master.NavBar.Visible = false;
}
// other stuff
}
答案 0 :(得分:0)
在您的页面中包含MasterType标记,这样您就不需要对页面进行类型转换。直接可以获得Master实例。
答案 1 :(得分:0)
此问题的解决方案是控件,母版页和页面被触发的顺序,它忽略了自定义控件上的设置。解决方案是将此功能添加到OnPreRender(EventArgs e)方法的自定义控件上。
protected override void OnPreRender(EventArgs e)
{
var master = this.Page.Master as Site;
if (master != null) // cast failed, your master is a different type
{
var progressShown = master.FindControl("ProgressShown");
if (progressShown != null)
{
master.NavBar.Attributes.Add("class", "test");
}
}
base.OnPreRender(e);
}