在母版页中隐藏用户控件

时间:2015-07-06 12:01:54

标签: c# asp.net user-controls master-pages

我有一个usercontrol,它存在于我的网络应用程序的所有页面中。

我想在一个页面中隐藏该用户控件。

所以我在master.master上有这个用户控件:

<%@ Register Src="~/LCSK/LiveSupportChat.ascx" TagPrefix="lc2" TagName="chat" %>

...在我称之为:

 <lc2:chat runat="server" ID="ClientUserControl" Visible="true" />

然后我有我的aspx页面,我想隐藏那个userControl。

该aspx页面有另一个母版页(与master.master不同):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LiveSupportChat.aspx.cs" Inherits="TrainReadyV3.LiveSupportChat" MasterPageFile="~/App.Master" %>

在我的app.master中,我有这个:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="App.master.cs" Inherits="TrainReadyV3.App" MasterPageFile="~/master.Master" %>

如何从master获取用户控件,并在用户转到livesupport aspx时隐藏它?

2 个答案:

答案 0 :(得分:0)

如果您想获得母版页,您可以这样做,但我不明白,您在母版页中有母版页?或者

foreach (Control a in Page.Master.Controls)
        {
            foreach (Control c in Master.Controls)
            {
                if (c.UniqueID == "form1")
                {
                    foreach (Control b in c.Controls)
                    {
                        if (b.UniqueID.Contains("header"))
                        {
                            b.Visible = false;
                        }
                    }
                }
            }
        }

答案 1 :(得分:0)

我认为以下有更好的工作机会:

  ContentPlaceHolder cp = this.Master.Master.FindControl("MainContent") as  ContentPlaceHolder;
  Control uc= cp.FindControl("ClientUserControl") as Control;

您的主(最顶层)母版页有一个contentplaceholder,如:

<asp:ContentPlaceHolder ID="MainContent" runat="server" />