一、模板页面和内容页面区别
模板页面与普通".aspx"文件代码相比,母版页代码有3点差异:
(一)是母版页与普通".aspx"文件在代码结构方面基本没有差异,二者都需要声明<html>、<body>、<form>及其他Web元素等。但文件的代码头声明不一样,普通".aspx"文件的代码头声明是<%@ Page %>,而母版页文件的代码头声明为<%@ Master %>。
(二)是在母版页中可以包括一个或者多个ContentPlaceHolder控件,而在普通".aspx"文件中不包含该控件。ContentPlaceHolder控件起到一个占位符的作用,能够在母版页中标识出某个区域,该区域将由内容页中的特定代码代替。
(三)是母版页的扩展名是".master",这一点与普通".aspx"文件不同。网站访问者不可以直接访问母版页,必须通过内容页对母版页的绑定,才能够间接访问母版页。
二、模板页面和内容页面运行机制
单独的母版页是不能被用户所访问的。没有内容页支持,母版页仅仅是一个页面模板,没有更多的实用价值。同样道理,单独的内容页没有母版页的支持,也不能够应用。这两者是不可分割的,只有同时正确创建和使用母版页及内容页,才能发挥它们的强大功能
母版页和内容页的运行过程可以概括为以下5个步骤。
a、用户通过输入内容页的URL来请求某内容页。
b、获取内容页位置后,读取内容页@ Page指令。如果该指令引用一个母版页,则读取该母版页。
c、读取母版页后,编译母版页,将母版页载入内容页的控件树中。
d、将各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中。
e、呈现得到结果页。
三、模板页面和内容页面事件分析
事件运行顺序:
1 、protected void Page_Init(object sender, EventArgs e){模板的}
2 、protected void Page_Init(object sender, EventArgs e){内容的}
3、 protected void Page_Load(object sender, EventArgs e){内容的}
4、 protected void Page_Load(object sender, EventArgs e){模板的}
5、 protected void Page_UnLoad(object sender, EventArgs e){模板的}
6、 protected void Page_UnLoad(object sender, EventArgs e){内容的}