在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事件是在生命周期内和页面加载结束时触发。
-------------------------------------------------------------------------------------------------------------------------
本文系作者GISQZC原创文章,欢迎转载,但必须注明出处,否则将追究相关法律责任!