ASP.NET内容页中访问母版页中的对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET内容页中访问母版页中的对象相关的知识,希望对你有一定的参考价值。

      在ASP.NET2.0开始,提供了母版页的功能。母版页由一个母版页和多个内容页构成。母版页的主要功能是为ASP.NET应用程序中的页面创建相同的布局和界面风格。母版页的使用与普通页面类似,可以在其中放置文件或者图形、任何html控件和Web控件、后置代码等。

     母版页仅仅是一个页面模板,单独的母版页是不能被用户所访问的。母版页和内容页有着严格的对应关系。母版页中包含多少个ContentPlaceHolder控件,那么内容页中也必须设置与其对应的Content控件

      回顾了母版页的概念后,我今天主要是总结如何在普通的页面中访问与其关联的母版页中的对象(比如说控件的值):

     我们知道 Page对象具有一个公共属性Master,该属性能够实现对母版页基类MasterPage的引用;MasterPage相当于普通ASP.NET页面中的Page对象。因此,可以使用MasterPage对象实现对母版页中各个子对象的访问。

     具体的程序实例如下:

      在一个ASP.NET空网站项目中,添加一个母版页MasterPage1.Master和一个普通页面Default。然后分别在母版页和内容页中添加一个Label按钮。母版页中的Label控件的ID属性为labMaster,用来显示当前系统日期;内容页的Label控件的ID属性为labContent,用来显示(访问)母版页中的Label控件值。
   在MasterPage1.Master母版页的Page_Load事件中添加如下代码:

1 protected void Page_Load(object sender, EventArgs e)
2     {
3         this.labMaster.Text = "今天是" + DateTime.Today.Year + "" + DateTime.Today.Month + "" + DateTime.Today.Day + "";
4     }

     在Default.aspx内容页中的Page_LoadComplete事件中,添加如下代码:   

1 protected void Page_Complete(object sender, EventArgs e)
2     {
3         if (!this.IsPostBack)
4         {
5             //实现普通页面访问模板页中的控件;
6             Label masterLabel = this.Master.FindControl("labMaster") as Label;
7             this.labContent.Text = masterLabel.Text;
8         }
9     }

   运行程序后,在内容页的Label控件中就显示了母版页Label.text的值。
   需要注意的是:内容页的Page_Load事件时先于母版页的Page_Load事件引发。所以这里使用的是Page_LoadComplete事件。其中Page_LoadComplete事件是在生命周期内和页面加载结束时触发。

以上是关于ASP.NET内容页中访问母版页中的对象的主要内容,如果未能解决你的问题,请参考以下文章

关于asp.net中页面事件加载的先后顺序

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件

Jquery Mobile:管理 ASP.NET 母版页中的数据角色

用户登录时在母版页中隐藏登录面板。(ASP.net)

在 asp.net 母版页中更改页脚颜色

ASP.NET 中的 Ajax 自动完成文本框在母版页中不起作用