ASP.NET 母版页学习记录

来源:互联网 发布:saber软件百度云 编辑:程序博客网 时间:2024/06/02 02:01

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页面称为内容页,内容页创建步骤如下:

  1. 在现有网站的“解决方案资源管理器”窗口的网站名上单击【添加新项】选项,进入“添加新项”打开窗口;
  2. 选择【Web窗体】,勾选“添加母版页”,单击“添加”,进入“选择母版页”窗口
  3. 选择需要的.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>

母版页的工作原理

  1. 用户在浏览器中通过内容页的URL来请求访问Web页面。获取该页后,读取页面的Page指令。
  2. 如果该指令引用一个母版页,则读取相应的母版页。如果是第一次请求这两个页,则两个页都要进行编译。
  3. 将内容页中各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中,生成结果页。
  4. 用户浏览器中呈现服务器返回的由母版页与内容页合并的结果页。