Asp.Net2.0中的导航功能(一)--概述
网站的导航功能是给浏览该网站的用户起一个指示的作用,让用户能清楚了解自己当前处于网站的哪一层,并能快速在各层不同模块间进行切换。
过去我们做网站时需要手动地为每一个页面实现导航功能,这样做起来工作量太庞大,可维护性差,而且很容量出错。
在Asp.Net2.0中为我们提供了三个常用的导航控件:
TreeView控件
Menu控件
SiteMapPath控件
导航控件的优点在于:
1、提供可视化的操作界面,和面向对象的思想,简化开发人员的使用。开发人员没有必要再去为HTML,CSS,JavaScript大费脑筋,只需要设置内处属性就可以制作出专业的网站导航。
2、数据源的多样化,可以进行动态生成导航内容。开发人员除了可以在程序中把导航内容写“死”,还可以把导航内容放XML、SiteMap文件中甚至可以放在数据库中。
一、以上这三个控件要实现导航功能一般离不开一个“地图文件”,“地图文件”中记录了导航控件中的导航内容,并有固定的书写格式。
如:
//web.sitemap文件的内容
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="china.aspx" title="中国" description="">
<siteMapNode url="shandong.aspx" title="山东" description="">
<siteMapNode url="default9.aspx" title="济南">
<siteMapNode url="site.aspx?id=0100" title="平阴"></siteMapNode>
<siteMapNode url="site.aspx?id=0101" title="历城"></siteMapNode>
<siteMapNode url="site.aspx?id=0102" title="章丘"></siteMapNode>
</siteMapNode>
<siteMapNode url="qingdao.aspx" title="青岛"></siteMapNode>
<siteMapNode url="yantai.aspx" title="烟台"></siteMapNode>
</siteMapNode>
<siteMapNode url="jiangsu.aspx" title="江苏" description="">
<siteMapNode url="nanjing.aspx" title="南京"></siteMapNode>
<siteMapNode url="suzhou.aspx" title="苏州"></siteMapNode>
</siteMapNode>
<siteMapNode url="liaoning.aspx" title="辽宁">
<siteMapNode url="shenyang.aspx" title="沈阳"></siteMapNode>
<siteMapNode url="dalian.aspx" title="大连"></siteMapNode>
</siteMapNode>
</siteMapNode>
</siteMap>
通过上面的例子大家能看出“地图文件”是一个典型的XML文件,其中的每一个节点元素的名子都是siteMapNode,它呈现的是一种层次型的结构,与我们网站的导航功能在逻辑上是一致的。
url属性:表示该导航节点所对应的超链接路径。
title属性:导航节点所显示的名称
description属性:节点的描述性说明
二、如果要读取地图文件的信息,我们一般会使用SiteMapDataSource控件,它是一个DataSource控件。它会自动嗅探相应目录下的web.sitemap文件,并把它读取出来,然后交给导航控件显示。SiteMapDataSource控件一般直接放在页面上就可以运行了,无需其它复杂设置。
三、TreeView控件将数据源的信息以树状目录的结构展现出来。
![](http://hiphotos.baidu.com/grayworm/pic/item/85a66b3f8afd2be655e723c1.jpg)
属性:
CollapseImageUrl:子元素收合起来时的节点图像路径。
ExpandImageUrl:子元素展开后的节点图像路径。
NoExpandImageUrl:叶子节点的图像咱径。
ShowExpandCollapse:是否显示"+"、"-"节点指示
ShowLines:是否显示节点之间的连线
Nodes:当前节点的子节点集合
方法:
CollapseAll():关闭所有节点。
ExpandAll():展开所有节点。
事件:
SelectedNodeChanged:在节点选取时触发。
TreeNodeExpanded:在展开节点时触发。
TreeNodeCollapsed:在节点收缩时触发。
TreeNodeDataBound:当数据项绑定的时候触发。
四、SiteMapPath控件,是导航条工具。
![](http://hiphotos.baidu.com/grayworm/pic/item/d7c7463379b7bbf21b4cffc2.jpg)
属性:
PathSeparator:各导航项之间的分隔符。
ParentLevelsDisplayed:显示该节点的几层父节点,默认是-1,显示所有的父节点。
事件:
ItemCreated:创建节点项时触发。
ItemDataBound:将数据绑定到节点项时触发。
这两个事件与Asp.Net1.1中DataGrid的两个事件的意思相似在此不多说。
五、Menu控件,以层次型菜单的形式展现导航内容,可以在属性页面和智能菜单中设置它的一些属性。
![](http://hiphotos.baidu.com/grayworm/pic/item/f5f343238ba00644935807c2.jpg)
属性:
DisappearAfter:当鼠标放在菜单上时,动态菜单显示的时间
StaticDisplayLevels:静态菜单中要显示的层级数
MaximumDynamicDisplayLevels:对动态菜单呈现的菜单层级数目
事件:
MenuItemClick:点击菜单项所引发的事件
MenuItemDataBound:绑定数据时发生