1.访问控件(多一层嵌套就多一个.Master)
ContentPlaceHolder cp= (ContentPlaceHolder)Master.Master.Master.FindControl("ContentPlaceHolder1");
Label l1= (Label)cp.FindControl("lb1");l1.Text = "xxxxx";
Label l2= (Label)Master.Master.Master.FindControl("lb2l");
l2.Text = "xxxx";
2.访问属性
string test = "";
public string Test
{
get { return test; }
set { test = value; }
}
此属性是顶层母版页的。
1>没有嵌套即只有一个母版页时:
在内容页添加<%@ MasterType VirtualPath = "~/MainPage.master" %>
在内容页后台代码中Master.Test = "xxx";
绑定了这个属性的控件也会相应改变.
2>有多层嵌套时:还在考虑ing...
找到一个解决办法:
以2个母版页一个内容页为例
顶级母版页属性
string mValue = "";
public string MValue
{
get { return mValue; }
set { mValue = value; }
}
次级母版页属性
string test = "";
public string Test
{
get { return test; }
set { test = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
Master.MValue = test;
}
内容页
Master.Test = "内容页访问顶层母版页";
次级母版页要添加<%@ MasterType VirtualPath = "~/MainPage.master" %>
内容页要添加<%@ MasterType VirtualPath = "~/SubPage.master" %>
这里MainPage.master和SubPage.master分别是顶层母版页和次级母版页的名字。
可以解决问题。但比较蛋疼的是多层嵌套会比较麻烦。
肯定有更好的解决办法...