母版页(Master Pages)

原创 2006年06月05日 14:40:00

    ASP.NET 1.x中最突出的缺点之一是它缺少对页面模板的支持。欠缺的是定义其他页面可以继承的“母版页”能力。开发人员通过使用用户控件(它们可以容易地在页面之间复制)创建页面来弥补这一缺陷。在ASP.NET 2.0中,由于加入了一个称作“母版页”的新增功能,所以不再需要这种技巧。想一想“可视化继承”,您就会理解母版页是干什么用的了。首先,您需要定义一个母版页(其中包含您希望在其他页面上显示的内容),并且使用ContentPlaceHolder控件来定义子页面可以将其内容插入的位置。然后,您需要生成子页面—SPX文件,它使用(类似于)如下所示的指令来引用母版页:

<%@ Page MasterPageFile="~/Foo.master" %>

    在子页面中,您使用Content控件来填写母版页中的占位符。在浏览器中呈现子页面,出现的内容将是在母版页和子页面中所定义内容的完美组合。

<%@ Master %>

<html>
    <body leftmargin="0" topmargin="0" rightmargin="0"
        bottommargin="0" marginheight="0" marginwidth="0"
    >
        <!-- Banner -->
        <table cellspacing="0" cellpadding="0"
            style="background-image: url('images/stripes.gif');  
            background-repeat: repeat-x, repeat-y" width="100%"
        >
            <tr><td align="center">
                <span style="font-family: verdana; font-size: 36pt;
                    font-weight: bold; color: white"
                >
                    Master Pages
                </span><br>
                <span style="font-family: verdana; font-size: 10pt;
                    font-weight: normal; color: white"
                >
                    This banner provided by Master.master
                </span>
            </td></tr>
        </table> 

        <!-- Placeholder for content between banner and footer -->
        <form id="Content">
            <asp:ContentPlaceHolder ID="Main" RunAt="server" />
        </form>

        <!-- Footer -->
        <table width="100%"><tr><td align="center">
            <span style="font-family: verdana; font-size: 8pt; color: red">
                Copyright (c) 2004 by Me Inc. All rights reserved<br>
                This footer provided by Master.master
            </span>
        </td></tr></table>
    </body>
</html>

Master.master

<%@ Page MasterPageFile="~/Master.master" %>

<asp:Content ContentPlaceHolderID="Main" RunAt="server">
    <table width="100%" height="256px"><tr><td align="center">
        <h2>This content provided by Subpage.aspx</h2>
    </td></tr></table>
</asp:Content>

图1 Subpage.aspx

    图1中所示的应用程序使用母版页来定义出现在每个页面上的页眉和页脚。子页面通过将Content控件插入母版页的ContentPlaceHolder中,从而在页眉和页脚之间插入内容。您应该注意匹配的ID和ContentPlaceHolderID,以及母版页中的@ Master指令。

    母版页在ASP.NET对象模型中得到了充分支持。System.Web.UI.Page类的特点是具有一个名为Master的新属性,该属性使子页面可以用编程方式来引用它的母版页以及在其中定义的控件。母版页可以嵌套,并且可以包含能够在子页面中重写的默认内容。

<asp:ContentPlaceHolder ID="Main" RunAt="server">
    This is default content that will appear in subpages unless
    explicitly overridden
</asp:ContentPlaceHolder>

    此外,应用程序可以在Web.config中指定默认的母版页,如下所示:

<configuration>
    <system.web>
        <pages masterPageFile="~/Foo.master" />
    </system.web>
</configuration>

    单个子页面享有重写默认母版页和指定它们自己的母版页的自由。

    最精彩的部分是Visual Studio® 2005中对母版页的支持。当加载子页面时,IDE将显示母版页中定义的内容的灰色、只读版本,以及子页面中定义的内容的全色、完全可编辑版本。区分这两者很容易,并且如果要编辑属于母版页的内容,那么您需要做的全部事情只是在IDE中打开母版页。

    有关母版页的更多深入内容,请参阅本期杂志相关的母版面的文章。

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

SharePoint Pages(2)之SharePoint母版页

定制和开发SharePoint Pages   这本书是关于在Visual Studio 2010如何进行SharePoint 2010开发的,我们将主要集中讲述如果创建应用程序页。这是唯一一种在V...

Asp.Net 2.0 的 Master Page(母版页)

   Master Page(母版页)是VS2005中新引入的一个概念,它很好地实现界面设计的模块化,并且实现实现了代码的重用。它就像婚纱影楼中的婚纱模板,同一个婚 纱模板可以给不同的新人用,只...
  • DMX66
  • DMX66
  • 2016年03月30日 14:43
  • 265

如何打开Select a Master Page(选择母版页)对话框

近期在学习《C#入门经典(第6版)》,学到第588页时有这么一句:打开Select a Master Page对话框。         如下图所示:                        ...

Master 母版页图片路径问题 C#

1. 图片、标签  非常好解决  runat="server"> runat="server">    加上runat="server" ,路径使用绝对路径 ~/ 基本上就OK...

母版页应用

  • 2012年12月19日 09:01
  • 905KB
  • 下载

asp.net MVC 2 中的重用: Master pages、Partials 、Child actions以及MVC 控件

微软给asp.net 带上MVC的翅膀,很大一个原因就是为了满足大中型软件开发的工程化和规范化。而要实现软件的工程化和规范化,重用就是软件工程中很大一个要求。所以在asp.net MVC中,微软也尽可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:母版页(Master Pages)
举报原因:
原因补充:

(最多只允许输入30个字)