母版页
母版页的目的
就是从内部建立支持网页模板的功能,以实现网站一致性要求。
母版页的功能(两个包含,一个结合)
两个包含——指将页面分为非公共部分和公共部分,并且两者被分别包含在两个文件中。
一个结合——指控件应用以及属性设置等行为,将母版页和内容页有机结合。
在实现网站一致性的过程中,必须包含两种文件:
- 母版页
- 内容页
内容也实际上是普通的.aspx文件,它包含除母版页之外的其他非公内容
常见母版页代码结构:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebApplication1.Site1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>
母版页与普通.aspx文件代码比较
- 母版页的扩展名是.master,所以以.master为扩展名的文件都是母版页,这一点与普通.aspx文件不同。客户端浏览器可以向服务器发出请求,要求访问.aspx文件,但是,如果请求的是母版页,则不能执行。客户端可以访问内容页,通过内容页对母版页的绑定,才能够间接访问母版页。
- 普通的.aspx文件的代码头声明是<%@Page%>,而母版页文件的代码头声明与此不同,它必须声明为<%@Master%>。除此之外,母版页与普通.aspx文件在代码结构方面基本没有差异。
- 母版页中可以包括一个或者多个ConreolPlaceHolder控件。而在普通.aspx文件中是不包含该控件的。ConreolPlaceHolder控件起到一个占位符的作用,能够在母版页中标识出某个区域,该区域将被内容页中的特定代码代替。
内容页主要包含页面中的非公内容。虽然,其代码结构与普通.aspx文件差异很大。
常见的内容页的代码结构:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> </asp:Content>
内容页的代码主要分为:
(1)代码头声明
(2)Content控件
内容也和母版页的运行过程可以概括为一下5个步骤:
(1)用户输入内容页的URL来请求某页。
(2)获取内容页后,读取@Page指令。如果该指令引用一个母版页,则也读取母版页。如果是第一次请求这两个页,则两个页都要进行编译。
(3)母版页合并到内容页的控件树中。
(4)各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中。
(5)呈现得到的结果页。
母版页的优点
- 有利于站点修改好维护,降低开发人员的工作强度。
- 提供高效的内容整合能力。
- 有利于实现页面布局。
- 提供一种便于利用的对象模型。
创建母版页
创建内容页