首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.4  创建站点地图

为了能够使用ASP.NET 2.0的导航功能,需要一种描述站点每个页面的标准方法。这个标准不仅应该包括站点的所有页面的名称,也应该包括它们的层次关系。例如,球员的统计信息页将是一般的球员列表页的子页,而球员列表页又是主页的子页:

Home

- Players

-- Player Statistics

定义这种层次关系是站点设计的一个重要方面,因为想知道(在开始编码前)需要开发哪些页面,在不同的页面上哪些链接与用户有关以及在查看了某个特定页面后用户可能想去哪浏览。画出站点的树型结构图(像上面所示的简单例子)是需要采取的第一个步骤。然后可以转到下一个阶段,使用代码定义页面的这种层次结构。

ASP.NET 2.0把这些信息保存在一个名称为web.sitemap的XML文件中。使用这些文件作为菜单和导航控件的数据源,这将在第3章讨论。

Microsoft在ASP.NET 2.0中提供的是如果站点数据是根据web.sitemap中的标准存储的,在菜单和导航控件中使用站点数据的方法。VWD包含一个具有web.sitemap中的标记的模板。但是到本书写作时为止还没有能够扫描站点并生成放置到这些标记中的数据的工具。肯定会有第三方填充这个空白,但是目前必须把信息键入到web.sitemap文件中。

站点地图必须是具有确切名称web.sitemap的XML文件并位于Web应用程序的根目录下。XML是一种保存数据的标准,有点像数据库,但它是人类可读的文本形式。每一个数据项保存在结点 中,在本例中一个结点表示站点的具有页面URL、标题和描述的一个页面。XML文件以树型结构保存结点,因此ASP.NET 2.0 能知道哪个页面将被认为是父页面的子页面。例如,页面Corporate Departments 将是有关SalesResearch Accounting等详细信息的子页面的父页面。文件中的第一个标记是XML文件用于识别版本和XMLNS的标准标记,如以下代码所示:

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

当使用VWD从模板站点地图向根目录添加项目时,会自动为您键入这两行。结点的名称是简单的:<siteMap>包含<siteMapNode>标记。每个标记表示一个Web页面并可以包含以下属性(<SiteMapNode>标记的所有属性都是字符串):

  ●    Title用于描述页面(它不链接到页面标题的<Title>标记,虽然它可能具有相同的值)。

  ●    URL表示此结点描述的页面的位置。

  ●    Description对页面的描述。

注意URL可以包含querystring数据,它是在页面URL字符串的结尾定义的附加信息,它作为请求的一部分发送以显示页面。例如,对页面的普通引用与下面代码的第一行相似,而带有附加数据(例如,日历中显示的月份)的引用与第三行相似:

url="Calendar.aspx"

url="Calendar.aspx?Month=May"

站点地图中列出的页面的层次(父/子关系)是通过在父结点的开始和结束标记中包含子结点建立的。注意在以下的代码中两个子页面(Members和Calendar)是如何出现在Home页面(用灰色背景显示)的开始和结束标记中。缩排形式是为了人们看起来方便;它不影响页面的层次。注意子页面(Members和Calendar)的标记可以使用<Tag... />形式的单个标记。但是因为父页面(Home)具有子页面(它包含其他的结点),所以它必须使用<Tag>...</ Tag>形式的两个标记:

<siteMap>

  <siteMapNode title="Home" url="Default.aspx" description="Home page for MySite">

    <siteMapNode title="Members" url="Members.aspx" description="All Members" />

    <siteMapNode title="Calendar" url="Calendar.aspx" description="Club   Events" />

  </siteMapNode>

</siteMap>

为了在Calendar(Home页面的孙子页面)内创建两个子页面,需要采取两个步骤。首先,把Calendar<SiteMapNode>转换成两个标记的形式,然后如以下突出显示的代码所示添加两个子标记。如前面注释框中所述,记住必须在web.sitemap文件的Source View中通过手动键入来完成这些工作。VWD既不提供执行自动扫描的构件工具,也不提供从Solution Explorer向web.sitemap文件拖放的方式。

<siteMap>

  <siteMapNode title="Home" url="Default.aspx" description="Home page for MySite">

    <siteMapNode title="Members" url="Members.aspx" description="All Members"/>

    <siteMapNode title="Calendar" url="Calendar.aspx" description="Club Events">

       <siteMapNode title="Calendar of Racing Events"

                url="Calendar\Racing.aspx" description="Racing Events" />

       <siteMapNode title="Calendar of Social Events"

                url="Calendar\Social.aspx" description="Social Events" />

    </siteMapNode>

  </siteMapNode>

</siteMap>

注意在<SiteMapNode>元素上可以指定另一个属性:roles属性。正如将在第11章中学到的,在Wrox United站点地图文件中使用了此属性。可能存在虽然拒绝用户访问页面,但却想让用户知道页面存在的情况。这样,可以向用户提供一个链接,但是当用户单击该链接时,提示在可以查看页面前以具有足够特权的用户身份登录。

下一个实验要为Wrox United创建一个web.sitemap。在完成下一章之前,不能看到辛勤工作的结果,下一章将学习导航控件的概念,但现在是把基于纸面的站点结构设计转变成代码的阶段,因此使之正确是很重要的。

一、实验 创建站点地图

1.在Solution Explorer中右键单击站点的根目录,然后选择Add New Item。选择名称为Site Map的模板并把它命名为web.sitemap。注意VWD自动添加前两个标记并给出三个结点的框架。第一个是最高一级的结点(Home),另两个是子结点。

2.使用下面的代码修改第一个<siteMapNode>以表示Home页面:

<siteMapNode title="Home" url="Default.aspx" description="Wrox United Home Page">

3.把下一个结点<siteMapNode>(第一个子结点)修改成如下形式:

<siteMapNode title="Fixtures" url="Fixtures.aspx" description="Match Fixtures">

4.把一个完整的空的<siteMapNode>复制到剪贴板中以便能够粘贴它而不用重新键入标记。

5.创建Fixtures的两个子结点,如突出显示的部分所示:

<siteMapNode title="Fixtures" url="Fixtures.aspx" description="Match Fixtures">

  <siteMapNode title="Future Fixtures"

                  url="Fixtures.aspx?type=future"

                  description="Who we're going to be playing" />

  <siteMapNode title="Past Fixtures"

                  url="Fixtures.aspx?type=past"

                  description="Who we've already played" />

</siteMapNode>

正如所见,在站点的Fixtures部分有两个子结点,能查看将来和以往比赛时间的详细资料。

6.要完成本示例还要指明好几个子结点,因此为了节省时间,我们在本章的目录下(C:\
BegASPNet2\Chapters\begin\Chapter02)在一个名称为web.sitemap.remainder的文件中包含了其余的结点。所要做的就是在记事本中打开此文件,复制文件的全部内容并把这些内容粘贴到位于底部的自己的文件中。或者,可以随时把web.sitemap文件导入到您的站点。

7.此时还没有对web.sitemap文件进行很好的测试,因为将在第3章论述显示数据的控件,但是对此基础有一个了解是很重要的,因为可以使用它向站点添加导航功能。

二、工作原理

在此练习中,承担创建站点地图文件的任务。回想一下VWD不包含自动创建此文件的工具,但是确实包含能预先键入一些标记的模板来开始我们的工作。ASP.NET 2.0 只使用名称为web.sitemap的文件,因此要避免更改其名称。

添加新的一项站点地图模板并切换到Source View。VWD添加开始的几个标记和第一个结点的标记。然后您需要手动键入所有的数据并且开始复制和粘贴页面的所有其他标记和数据。(很明显,如果有第三方编写能自动完成此任务的软件,将会有很好的销路。)

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论