有条件地从主页面禁用.aspx中的控件

时间:2009-06-05 09:17:39

标签: asp.net master-pages

好吧,这可能有点奇怪,所以我将首先解释我正在尝试做什么。我的网站有几个主页,并且它们互相继承。在第二个(总共4个)中我有一个背景图像。这是诀窍,我想从最终的aspx页面覆盖这个图像。我无法更改此图像的位置,它必须位于母版页2中,因为有些页面将该页面用作母版页。

我有一个想法是在图像旁边创建一个ContentPlaceHolder,如果有任何图像(检查Page_Load),那么主图像将被隐藏。我使用递归函数执行此操作,通过循环访问ContentPlaceHolder的控件来查找图像。当我将visibility属性设置为false时,没有任何反应。

关于如何做到这一点的任何其他想法,或为什么上述不起作用?

编辑:这不是要更改母版页中的项目,而是相反,从主页代码后面挖掘到当前显示的页面并查看它是否具有控件具体的ContentPlaceHolder。

3 个答案:

答案 0 :(得分:1)

我设法访问母版页上的控件,如下所示:

        Control control = Master.FindControl("ControlID");
        if (control is ControlType)
        {
            ControlType menu = control as ControlType;
            menu.Visible = false;
        }

不确定这是否会对您的问题有所帮助。

答案 1 :(得分:0)

答案 2 :(得分:0)

谢谢Stephen,

我设置了在使用defaultpage.aspx加载母版页时禁用Treeview。我在ContentPlaceHolder中放置了树视图,其中id =“cphtv”和树视图ID:TreeView1

Control control1 = Master.FindControl("cphtv");
if (control1 is ContentPlaceHolder)
{
    Label5.Text = "ContentPlaceHolder found";
    Control tc = control1.FindControl("TreeView1");
    if (tc is TreeView)
    {
        tc.Visible = false;
        Label6.Text = "tree view false";
    }
    else{
        Label6.Text = "tree view control  not found";

    }

}
else
{
    Label6.Text = "not found";
}