主题和母版页(母版页)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主题和母版页(母版页)

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

∙用户控件。用户控件时标准化通用页面元素的优秀方式,但是,它们自身并不能解决页面布局的问题,因为没有办法保证用户控件在所有页面中都被放到同样的位置。

∙HTML 框架。框架是在一个浏览器窗口中同时显示多个页面的HTML 基本工具。它的主要缺点是它里面的每个页面必须通过单独请求服务器进行检索,这些页面的代码不得不完全独立。这同时意味着一个框架里的页面不能和其他框架中的页面交互,也不能影响其他框架中的页面。(至少不能通过服务器端代码)

∙母版页。母版页是 的一个特性,它专门设计用于标准化Web 页面布局。

它可定义固定的内容并声明Web 页面里可插入自定义内容的部分。如果在整个网站中使用同一个母版页,就可以确保获得同样的布局。最妙的是,如果修改了母版页的定义,应用它的所有页面都会自动变化。

要为页面模版提供一个可操作且灵活的解决方案,必须满足以下几个条件。

∙要能够单独定义页面的某个部分并在多个页面里重用它。

∙要能够创建一个定义了可编辑区域的封闭布局。重用这个模版的页面只能够在许可的区域内添加或修改内容。

∙页面能够对重用的元素做一些自定义。

∙可以声明性的绑定页面倒页面模版(不使用代码)或者能够在运行时动态绑定到页面。∙可以用工具(如VS)设计一个使用页面模版的页面。

为了实现这一切, 定义了两种新的页面类型:母版页和内容页。

母版页和普通的Web 页面一样,它可以包含任何HTML、Web 控件甚至代码的组合。母版页还可以包含内容占位符(定义的可修改区域)。

内容页引用一个母版页并获得它的布局和内容。此外,内容页可以在任意的占位符里加入页面特定的内容。换句话说,内容页将母版页没有定义的缺失了的内容填入母版页。

母版页和一般Web窗体的区别是:

∙母版页由Master 指令开始,并提供和Page 指令相同的信息。而所有Web 窗体都由Page 指令开始。

∙只有母版页才可以使用ContentPlaceHolder控件,这个控件是内容页可以插入内容的部分。

创建一个母版页后,会得到一个只包含2 个ContentPlaceHolder控件的空白页。第一个是在区域定义的,它让内容页面能够增加页面元数据,比如搜索关键字和样式表链接。第二个也是更重要的ContentPlaceHolder被定义在区域,它代表

页面显示的内容。

另外,母版页不能被直接请求,要使用母版页,必须创建一个关联的内容页。

下面是个简单的母版页示例,它有一个静态的横幅,其后跟着一个ContentPlaceHolder控件,然后是一个页脚:

<%@ Master Language="C#" AutoEventWireup="true"

CodeFile="SiteTemplate.master.cs"

Inherits="Chapter16_SiteTemplate" %>


My Site




Copyright © 2008.

要在其他页面里使用母版页,必须在Page 指令里加入MasterPageFile特性:<%@ Page Title="" Language="C#"

MasterPageFile="~/Chapter16/SiteTemplate.master" ... %>

只设置MasterPageFile特性还不足以把普通的页面转变成内容页。内容页必须定义要插入一个或多个ContentPlaceHolder控件的内容(并编写这些控件需要的代码)。由于母版页已经提供了外壳,因此,试图在内容页中加入、、之类的元素,则会产生一个错误。

要为ContentPlaceHolder提供内容,要用到另一个叫Content 的特殊控件。ContentPlaceHolder和Content 控件具有一对一的关系。对于母版页里的每个ContentPlaceHolder,内容页会提供一个对应的Content 控件(除非不准备为那个区域提供任何内容)。 通过匹配ContentPlaceHolder的ID 和对应的Content 控件的Content.ContentPlaceHolderID属性将它们对应起来。

<%@ Page Title="" Language="C#"

MasterPageFile="~/Chapter16/SiteTemplate.master"

相关文档
最新文档