asp.net 对母版页的控件事件

1、在内容页上 访问母版页上的控件

在内容页中有个属性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);

} protected void Button1_Click(object sender, EventArgs e)

{

        this.Response.Write("<script   language='javascript'>alert('completed!');</script>");

}

下面是母版页与内容页合并后事件的发生顺序:

  1. 母版页控件 Init 事件。

  2. 内容控件 Init 事件。

  3. 母版页 Init 事件。

  4. 内容页 Init 事件。

  5. 内容页 Load 事件。

  6. 母版页 Load 事件。

  7. 内容控件 Load 事件。

  8. 内容页 PreRender 事件。

  9. 母版页 PreRender 事件。

  10. 母版页控件 PreRender 事件。

  11. 内容控件 PreRender 事件。

4、在内容页访问母版页上的属性 要访问母版页上的属性必须先在内容页上添加对母版页的引用如:<%@ MasterType virtualpath="~/PageTemplate/PageMaster.master" %> 这样就可以在内容页上直接引用母版页的属性了
原文地址:https://www.cnblogs.com/oldkingsir/p/2365652.html