第七章使用母版页设计网站.docx
《第七章使用母版页设计网站.docx》由会员分享,可在线阅读,更多相关《第七章使用母版页设计网站.docx(17页珍藏版)》请在冰豆网上搜索。
第七章使用母版页设计网站
第七章使用母版页设计网站
自引入Internet以来,使网站有统一的外观和操作方式是开发人员一直试图解决的一个问题。
大多数网站都有标题、脚标和菜单结构,但它们对放置其中的各个项目的处理方式不同。
多年来,产生了几个不同的技术来解决这个问题,例如服务器端的include文件、层叠样式表(CSS)、定制模板文件、XML和XSLT,以及最近的ASP.NET用户控件等。
这些技术都有其优缺点,但没有一种技术提供了使网站保持一致的解决方案。
在ASP.NET1.1中,用户控件(和CSS)提供了使网站布局保持一致的最佳方案,因为它们是面向对象的,可以定义一个或多个页面上的通用标题、脚标和菜单。
但是,大多数开发人员都要在每个页面上使用Reference指令以及相关的TagPrefix和TagName属性,来引用用户控件,导致代码的重复。
为了解决这些重复代码的问题,一些开发人员尝试把用户控件嵌入其他用户控件中。
这个方式的确有效,但在加载或回送操作中需要编程访问控件时,嵌套的对象模型很难使用。
ASP.NET2.0可以为网站提供统一的布局和结构。
该方式不是采用嵌套的用户控件、定制类和模板,而是使用ASP.NET2.0的母版页(母版页)定义网站的整体布局,且所花的时间和精力非常少。
它们可以在一个地方定义,在整个网站上共享,且不需要把标题、脚标和菜单用户控件硬编码到每个页面上。
本章将介绍母版页,描述可以在ASP.NET2.0网站上使用的各种技巧。
前两节概述母版页的创建和使用,其后的章节深入探讨母版页的用法。
7.1母版页基础
母版页提供了一种简单而高效的模板框架,它允许在一个模板文件中定义网站的公共组件,例如菜单、标题和脚标。
这将快速而轻松地修改网站的整体外观、操作方式和布局,因为对母版页模板的修改会自动应用于整个网站。
许多网站都只需要一个母版页,但也可以根据需要创建多个母版页——一个用于主页、一个用于子页面。
母版页也可以根据用户的配置或其他条件动态加载。
因此很容易提供页面的可打印版本,而无需修改页面的内容。
所有的母版页都有.master扩展名,它映射到处理程序System.Web.HttpForbiddenHandler上。
这个映射在Web服务器的默认web.config文件中定义,可以防止母版页直接在浏览器中打开,就好像带.ascx和.config扩展名的文件不能用浏览器查看一样。
试图在浏览器中查看扩展名为.master的文件,会导致一个“这类页面不能打开”错误。
母版页依赖.NETFramework中的已有类来执行其逻辑。
它们直接派生自UserControl类:
publicclassMasterPage:
System.Web.UI.UserControl
派生自UserControl的结果是,母版页有一组标准的属性,例如Page、Session、Request和Response,它们可以以编程方式访问。
母版页不能直接在InternetInformationServices(IIS)应用程序(如用户控件)之间共享,否则会生成一个错误。
本章的后面将学习解决这个问题的一种方式,让母版页可以在服务器的多个IIS应用程序之间共享。
7.1.1创建母版页
在VisualStudio.NET2005中,使用“添加新项”菜单就可以创建母版页,也可以在自己喜欢的文本编辑器中手动创建母版页。
简单的母版页(MasterDemo.master)如示例7-1(MasterDem.master)所示。
例7-1简单的母版页
<%@MasterLanguage="C#"AutoEventWireup="true"CodeFile="MasterDemo.master.cs"Inherits="第七章_MasterDemo"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:
//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
//www.w3.org/1999/xhtml">
母版页示例
800px;height:
160px"/>