清华电脑学堂:ASP.NET 4.5网站开发与应用实践教程
上QQ阅读APP看书,第一时间看更新

6.1 导航

一个网站系统通常包含众多页面,导航为网站的用户使用网页起到了引导作用,能够使用户方便快捷地找到自己需要的数据。本节介绍站点导航的基础和站点地图的使用。

6.1.1 导航控件

网站通常都有着一定的页面结构,但这个结构并不是存放在导航控件中,而是存放在站点地图或XML文档中,导航的实现通常需要以下几步。

(1)将网站中页面的逻辑结构和链接存储在站点地图中。站点地图是一个名为Web.sitemap的XML文件,描述站点的逻辑结构。

(2)使用SiteMapDataSource数据源控件读取站点信息。SiteMapDataSource将自动把Web.sitemap文件作为站点地图,读取链接数据。

(3)使用导航控件显示导航链接,包括SiteMapPath控件、Menu控件和TreeView控件。SiteMapPath控件常用于在页面头部单行显示当前页的路径;Menu控件可提供类似下拉列表的链接;TreeView控件常用于页面的左侧,显示网站中页面的分层。

6.1.2 站点地图

站点地图的创建是实现导航的第一步。站点地图描述了系统中页面的逻辑结构,在确定了逻辑结构之后,由其他控件直接读取。

网站的逻辑结构表现在页与页之间,每一个大中型网站都会有其页面间的逻辑结构。如一个网上购物系统,首页中包含商品的分类,在首页中选择需要的分类,进入某一个类的商品。

网购中商品信息多,其分类的级别也多,图6-1表述了网购系统中的部分页面结构。

图6-1 网购系统部分页面逻辑结构

在首页可以选择进入服装类、家电类还是食品类页面,在服装类页面又可以选择进入男装页面还是女装页面。

页面的逻辑结构将页面间的关系和页面执行路径描绘了出来,除了在导航中的作用,对于开发人员来说,对网站的整体结构的认识也变得清晰。

站点地图的创建需要在项目中添加Web.sitemap文件,具体方法是,打开【解决方案资源管理器】,在项目名称上右击,选择【添加】|【新建项】命令,打开【添加新项】对话框,如图6-2所示。选择【站点地图】选项并单击【添加】按钮,完成站点地图的添加。

图6-2 添加站点地图

在站点地图中编辑,可双击站点地图名称,在打开的窗口中进行编辑。新建的站点地图通常有如下代码。

        <? xml version="1.0" encoding="utf-8" ? >
        <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
            <siteMapNode url="" title=""  description="">
              <siteMapNode url="" title=""  description="" />
              <siteMapNode url="" title=""  description="" />
            </siteMapNode>
        </siteMap>

对上述代码的解释如下。

(1)sitemap:根节点,一个站点地图只能有一个siteMap元素。

(2)siteMapNode:对应于页面的节点,一个节点描述一个页面。

(3)title:页面描述,通常用于指定页面标题。

(4)url:文件在解决方案中的路径。

(5)description:指定链接的描述信息。

虽然Web.sitemap文件的内容非常简单,但是编写时需要注意以下几点。

(1)站点地图的根节点为<siteMap>,每个文件有且仅有一个根节点。

(2)<siteMap>下一级有且仅有一个<siteMapNode>节点。

(3)<siteMapNode>下面可以包含多个新的<siteMapNode>节点。

(4)每个站点地图中同一个URL只能出现一次。

【范例1】

如果将如图6-1所示的页面逻辑结构在站点地图中描述,则站点地图中代码如下。

        <? xml version="1.0" encoding="utf-8" ? >
        <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
          <siteMapNode url="" title="网购系统首页"  description="首页">
            <siteMapNode url="" title="服装"  description="">
              <siteMapNode url="" title="男装"  description="" />
              <siteMapNode url="" title="女装"  description="" />
            </siteMapNode>
            <siteMapNode url="" title="家电"  description="">
              <siteMapNode url="" title="冰箱"  description="" />
              <siteMapNode url="" title="空调"  description="" />
              <siteMapNode url="" title="洗衣机"  description="" />
            </siteMapNode>
            <siteMapNode url="" title="食品"  description="">
              <siteMapNode url="" title="干货"  description="" />
              <siteMapNode url="" title="蔬菜"  description="" />
              <siteMapNode url="" title="水果"  description="" />
            </siteMapNode>
          </siteMapNode>
        </siteMap>

每一个有着子节点的<siteMapNode>节点都要以</siteMapNode>结尾,没有子节点的<siteMapNode>节点可以在其<siteMapNode>尖括号内使用“/”,如<siteMapNode url="Phone.aspx" title="男装" description="" />。

警告

Web.sitemap文件的路径不能更改,必须存放在站点的根目录中,URL属性必须相对于该根目录。