0

我有一个带有占位符控件的母版页。

我有一个从母版页继承的页面。

然后我有一个显示在页面上的自定义控件,这个自定义控件有一个转换到母版页,所以我可以访问占位符控件来打开和关闭可见性。当我在调试器中观看时,一切都按预期工作,但占位符控件无法关闭它的可见性。

我觉得这与事件触发的顺序有关。在母版页已经呈现后,页面上自定义控件中的任何代码似乎都在触发。

有谁知道我如何影响此页面的呈现方式,以便自定义控件可以打开和关闭占位符?

控件中的代码如下所示;

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

2 回答 2

0

在你的页面中包含MasterType标签,这样你就不需要对页面进行typecase了。Master,直接就可以得到Master实例。

于 2013-10-10T11:28:55.133 回答
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);
        }
于 2013-10-21T14:02:25.807 回答