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属性必须相对于该根目录。