如何从子页面控制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