母版页

母版页是ASP.NET提供的一种重用技术,使用母版页可以为应用程序中的页面创建一致的布局。单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。然后可以创建包含要显示内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并,以便将母版页的布局与内容页的内容组合在一起输出。

母版页为具有扩展名.masterASP.NET文件,它具有可以包括静态文本、HTML元素和服务器控件的预定义布局。母版页由特殊的@Master指令识别,该指令替换了用于普通.aspx页的@Page指令。

除在所有页上显示的静态文本和控件外,母版页还包括一个或多个ContentPlaceHolder控件。ContentPlaceHolder控件称为占位符控件,这些占位符控件定义可替换内容出现的区域。可替换内容是在内容页中定义的,所谓内容页就是绑定到特定母版页的ASP.NET页(.aspx文件以及可选的代码隐藏文件),通过创建各个内容页来定义母版页的占位符控件的内容,从而实现页面的内容设计。

在内容页的@Page指令中通过使用MasterPageFile属性来指向要使用的母版页,从而建立内容页和母版页的绑定。在内容页中,通过添加Content控件并将这些控件映射到母版页上的ContentPlaceHolder控件来创建内容。

母版页的优点

  1.使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。

  2.使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。

  3.通过允许控制占位符控件的呈现方式,母版页可以在细节上控制最终页的布局。

  4.母版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。

母版页的处理步骤

  1. 用户通过键入内容页的URL来请求某页。

  2. 获取该页后,读取@Page指令。如果该指令引用一个母版页,则也读取该母版页。如果这是第一次请求这两个页,则两个页都要进行编译。

  3. 包含更新内容的母版页合并到内容页的控件树中。

  4. 各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中。

  5. 浏览器中呈现得到的合并页。

在母版页中放入网页的方法

  1. 在母版页中放入新建网页的方法有两种:

    第一种是直接在母版页中生成新网页。

    第二种是在建立新网页时选择母版页。

  2. 在母版页放入存在的网页。一般通过手工加入或修改一些代码来使存在的网页嵌入到母版页中。 

使用实例

新建母版页MasterPage.Master,页面设计如下:

 1 <div align="Center">
 2         <table Width="900" Height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="yellow">
 3             <tr>
 4                 <td colspan="2" Width="900" Height="40" align="right" valign="top" bgcolor="pink">
 5                 </td>
 6             </tr>
 7             <tr>
 8                 <td Width="400"bgcolor="green" >
 9                     <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"/>
10                 </td>
11                 <td Width="500" bgcolor="blue">
12                     <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server" />
13                 </td>
14             </tr>
15             <tr>
16                 <td colspan="2" bgcolor="black" Height="20"></td>
17             </tr>
18         </table>
19 </div>

在母版页中放入新建网页WebForm1.aspx,添加页面导航,代码如下:

 1 <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master"
 2  AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"
 3  Inherits="WebApplication2.WebForm1" %>
 4 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
 5 </asp:Content>
 6 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
 7     <a href="WebForm2.aspx">主页</a>
 8 </asp:Content>
 9 <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
10     <a href="WebForm3.aspx">主题</a>
11 </asp:Content>

添加页面WebForm2.aspx和WebForm3.aspx。

 

posted @ 2015-10-06 22:28  追风的小蜗牛  阅读(968)  评论(4编辑  收藏  举报