如何从子页面控制asp.net母版页上的元素

我在asp.net网站上有几页我想关闭母版页上的控件。 有没有办法从子页面与母版页进行通信?

最简单的方法是在主页面上设置一个属性,在调用时处理开/关function。 然后在您的子页面中设置MasterType指令以获取对母版页的强类型引用,以绕过强制转换的需要。

您的子页面将包含:

<%@ MasterType VirtualPath="~/Site1.Master" %> 

并调用母版页的属性:

 Master.MyLabel = false; // or true 

所以对你的主人你可以:

 public bool MyLabel { get { return masterLabel.Enabled; } set { masterLabel.Enabled = value; } } 

您需要在页面标记中使用MasterType指令

 <%@ MasterType TypeName="Namespace.Etc.MyMasterPage" %> 

然后,您将能够使用该页面的母版页的任何公共属性

 this.Master.PropertyIWantToIntefereWith... 

希望这可以帮助

以下是如何与子页面与母版页进行通信的示例。

在母版页中,为您想要访问的控件创建一个属性,比如一个名为lblUser的标签……

 public string MyProperty { set { lblUser.Text = value; } } 

在子页面中,访问刚刚创建的属性,如以下示例所示…

 ((MyMaster)this.Master).MyProperty = "Text changed from Sub Page"; 

我们能够做到这一点,因为Master只是一个inheritanceSystem.Web.UI.MasterPage的类。

我们创建的Label.Text属性只是Master类的属性(此名称将是当前母版页的特定名称,在本例中为MyMaster)。

请注意,如果没有强制转换为特定的母版页类,它将无法工作,这是因为您添加了一个在System.Web.UI.MasterPage中不存在的字段,即this.Master的类型,但在您的特定主类中。

我正在寻找类似的东西,但这个解决方案对我来说似乎不起作用。 我有一个嵌套的母版页。 这适用于嵌套主人吗? 当我实现时,它没有识别我添加到我的主人的控件。

 this.Master.FindControl("controlid").dosomethinghere