ASP.NET 母版页学习记录
母版页介绍
制作Web站点时,通常要求整个网站的页面在布局、色彩、局部功能以及导航等方面具有统一的风格。为方便这一目标的实现,从ASP.NET 2.0起,提供了母版页。母版页是单个ASP.NET页面,包含Web站点的完整结构,站点的其它所有页面都可以继承该页面。将该模板中的特定区域定义为内容区域(任意多个),可以在内容区域中进行有别于母版页的个性化页面设计。在母版页中可以包括静态文本、HTML元素和ASP.NET服务器控件等各种内容。通常情况下,母版页中包括各个页面的通用部分,如导航条、页眉、页脚以及版权信息等。
如何建立母版页
母版页创建步骤如下:在现有网站的“解决方案资源管理器”窗口的网站名上单击【添加新项】选项,进入“添加新项”打开窗口;选择【母版页】项目,即可向项目中添加一个母版页。
母版页的后缀名为.master。母版页同Web窗体在结构上基本相同,与Web窗体不同的是,母版页的声明方法不是使用Page的方法声明,而是使用Master关键字进行声明,示例代码如下所示:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Master.master.cs" Inherits="MasterPage" %>
完整代码如下:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!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>
说明:
- ContentPlaceHolder控件(内容占位符控件):指出继承该母版页的网页(内容页)的可编辑区域。
- 内容页实际上是通过内容占位符控件与母版页建立起关系。母版页中定义的占位符,最终需要由内容页来代替,内容页中的内容在运行时将自动绑定到特定的母版页中。
- 母版页中可使用多个ContentPlaceHolder控件。
创建内容页
应用母版页的.aspx页面称为内容页,内容页创建步骤如下:
- 在现有网站的“解决方案资源管理器”窗口的网站名上单击【添加新项】选项,进入“添加新项”打开窗口;
- 选择【Web窗体】,勾选“添加母版页”,单击“添加”,进入“选择母版页”窗口
- 选择需要的.master文件(注:同一级目录下可建立多个母版页),单击“确定”,则可添加一个继承母版页的新网页。
示例代码:
<%@ Master Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="MasterPage2.master.cs" Inherits="MasterPage2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
母版页的工作原理
- 用户在浏览器中通过内容页的URL来请求访问Web页面。获取该页后,读取页面的Page指令。
- 如果该指令引用一个母版页,则读取相应的母版页。如果是第一次请求这两个页,则两个页都要进行编译。
- 将内容页中各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中,生成结果页。
- 用户浏览器中呈现服务器返回的由母版页与内容页合并的结果页。