母版页(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中打开母版页。

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

ASP.NET 2.0 母版页(Master Pages)

ASP.NET 2.0 - 母版页(Master Pages) 母版页(Master Pages)为网站内的其他页面提供模版。 母版页(Master Pages) Master ...
  • angela8804100029
  • angela8804100029
  • 2013年04月08日 17:03
  • 402

在Master母版页中通过FindControl()方法获取服务器控件

一、服务器控件与代码都位于母版页1、Master母版页(1)Html代码@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPa...
  • wygyhm
  • wygyhm
  • 2008年09月09日 21:42
  • 2619

Java jsp MasterPages实现母版页,实现统一风格的页面布局

http://outofmemory.cn/code-snippet/964/Java-jsp-MasterPages-achieve-muban-page-achieve-tongyi-fengge...
  • lk5423968
  • lk5423968
  • 2015年12月23日 17:16
  • 4224

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

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

SharePoint 2013 入门教程之创建及修改母版页

在SharePoint 2013中,微软提供了根据HTML页面转换Master页的方法,并支持单项同步,但是这样的更新,并不完善,会使一些功能造成丢失,所以,了解Master结构的人,尽量直接去修改M...
  • linyustar
  • linyustar
  • 2013年11月16日 00:53
  • 2377

Page Layouts and Master Pages

Page Layouts and Master PagesPublishing in Microsoft Office SharePoint Server 2007 is fundamentally ...
  • nhyuan
  • nhyuan
  • 2009年07月09日 13:38
  • 219

Master Pages In ASP.NET 2.0

http://www.odetocode.com/Articles/419.aspx 
  • amanda1982
  • amanda1982
  • 2007年05月18日 13:27
  • 383

master pages控件使用说明

aspnet forums界面的最关键的问题首先在于它使用了MetaBuilders的Master Pages 控件. 到http://www.metabuilders.com/Tools/Maste...
  • xuxiaoping_cumt
  • xuxiaoping_cumt
  • 2005年11月08日 22:59
  • 755

Inside ASP.NET Master Pages

IntroductionMaster pages are templates for ASP.NET pages. It helps you to create consistence appeara...
  • amanda1982
  • amanda1982
  • 2007年05月16日 12:57
  • 614

Master Pages and JavaScript document.getElementById

Whenever a control is inside a Master Page, the client ID of the control would get appended with i...
  • lk5423968
  • lk5423968
  • 2010年09月20日 10:55
  • 319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:母版页(Master Pages)
举报原因:
原因补充:

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