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

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

母版页(Master Pages)相关推荐

  1. MOSS 2007基础:WSS 3.0 中的母版页(Master Pages)和内容页(Content Pages)

    原文地址:http://robgarrett.com/cs/blogs/software/archive/2006/07/03/2065.aspx 这篇很短的文章展示了ASP.NET2.0中的母板页和 ...

  2. 母版页(Master Pages)--轉載

    母版页(Master Pages) http://blog.csdn.net/iiboy/ ASP.NET 1.x中最突出的缺点之一是它缺少对页面模板的支持.欠缺的是定义其他页面可以继承的" ...

  3. 【原】母版页、皮肤、导航 那点事 Master Pages Themes and Navigation Controls FAQ

    最近比较忙,工作几乎无法喘息,突然闲置了一会,想想也好久没有发博客了,得写几篇了,最近好像灵感突然消失了,不管了,先发一篇吧,这篇肯定对大伙要帮助,好的话,您给我顶一个,不好,你也不要保留,直接告诉我 ...

  4. ASP.NET MVC Tip #31: 给 Master Pages 和 User Controls 传递数据

    原文地址:ASP.NET MVC Tip #31 – Passing Data to Master Pages and User Controls 原文作者:swalther 本文译者:QLeelul ...

  5. ASP.net 2.0 Migrating系列 - Master Pages 感触

    ASP.net 2.0 Migrating系列 - Master Pages范维肖 在Visual Web Developer 2005里的新建里多了一个Master Pages,在微软的VWD200 ...

  6. 了解Master Pages库

    aspnet forums界面的最关键的问题首先在于它使用了MetaBuilders的Master Pages 控件. 到http://www.metabuilders.com/Tools/Maste ...

  7. asp.net基础复习(二)——母版页

    1. 概述 母版页中包含的是页面公共部分,即网页模板.因此,在创建示例之前,必须判断哪些内容是页面公共部份. 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局.单个母版页可以为应用程序中 ...

  8. 使用SharePoint 2010 母版页

    SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术.通过该功能,实现了页面框架布局与实际内容的分离.虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但 ...

  9. 主题和母版页(母版页)

    标准化网站布局 标准化网站布局的格式只是整个过程的一部分,你还需要保证通用的元素,如网站的标题.网站的导航控件等在每个页面里都出现在相同的位置.解决这一问题的关键在于创建一个可以重复应用到整个网站的简 ...

最新文章

  1. 深度学习入门,一文讲解神经网络的构成、训练和算法
  2. 干货丨AI语音二三事:你需要了解这些AI 语音对话技术
  3. freebsd重启网卡命令
  4. python代码写龙卷风_python面试题
  5. 计算机统计字符数,如何在Word中统计相同字符(文字)出现的个数 -电脑资料
  6. 20 年,缔造了 Google 互联网王国!
  7. 关于日志系统显示SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
  8. u-boot 源码分析讲解
  9. java中使用okhttpsoap,Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
  10. matlab插值与拟合例题_MATLAB中数据插值和数据拟合的用法
  11. bzoj4417 [Shoi2013]超级跳马 矩乘
  12. python基础(2)
  13. python如何制作一个工程软件_使用python制作一个解压缩软件
  14. LINUX安装C#开发环境
  15. (完整版)环境工程学复习资料资料
  16. 读《三体_黑暗森林》
  17. 经典算法研究系列:八、再谈启发式搜索算法
  18. LED通信的ID识别报告
  19. 母婴购物微信商城的设计与实现
  20. 号外!微信企业版真的来了

热门文章

  1. vue前端实现上传文件,vue 上传文件
  2. 关于小程序的前后台数据交互
  3. javascript可以直接比较时间字符串的大小
  4. hust 1570 Lazy. Lazy. Laaaaaaaaaaaazy!
  5. 计算机中丢失quartz dll,win10系统提示缺少quartz.dll文件的解决方法
  6. python中的corr()方法
  7. python3中正确代码报红显示Indent expected
  8. 国庆西北环游之旅(一大波照骗来袭)
  9. 中英互译软件测试计划
  10. uboot 或者 linux 下限制 sata speed