在内容页中有个属性Master,可以通过它访问母版页。如我们要修改母版页上的标题,我们看到显示标题的那个Label的ID为Label1,在Page_Load事件中增加以下代码:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) ((Label)Master.FindControl("Label1")).Text = "标题被修改了!"; }
2、在内容页访问母版页上 自定义控件
假如要访问的控件是用户控件,这样写
MyCtrl myctrl = (MyCtrl)Page.Master.FindControl(“MyCtrl1”);
多半会编译出错,说缺乏MyCtrl的定义。原因是该控件在母版页上声明:
<%@ Register Src="myCtrl.ascx" TagName="myCtrl" TagPrefix="uc1" %>
一般情况下在内容页就不用再声明了。但如果要访问它就不同,也要在内容页的头部加上这一句。并没有重复声明的麻烦。
3、在内容 页上 调用母版页上的控件事件
只需在内容页上采用FindControl找到该控件然后在添加事件委托及可,但需要 注意的是母版页 和 内容页 的事件加载顺序 ,如果在内容页和 母版页都有同样的事件,则要考虑该哪里添加好事件了。
添加方式 如:
在内容页添加
protected void Page_Load(object sender, EventArgs e)
{
Button B1 = (Button)Page.Master.FindControl("Button1");
B1.Click += new EventHandler(B1_Click);
{
this.Response.Write("<script language='javascript'>alert('completed!');</script>");
}
下面是母版页与内容页合并后事件的发生顺序:
-
母版页控件 Init 事件。
-
内容控件 Init 事件。
-
母版页 Init 事件。
-
内容页 Init 事件。
-
内容页 Load 事件。
-
母版页 Load 事件。
-
内容控件 Load 事件。
-
内容页 PreRender 事件。
-
母版页 PreRender 事件。
-
母版页控件 PreRender 事件。
-
内容控件 PreRender 事件。