一旦定义了站点地图,就可以创建站点的导航用户接口。在Amazon.com站点,主页面在页面左边列出到各个分部分的超级链接。进入到一特定部分之后,在左边将显示该部分的子部分信息。然而,也可以使用另外的导航用户接口:你可能有一个树来显示各个部分和子部分,或用一个菜单作顶级菜单项来列举如书籍,电子产品,DVD,等等;而每个菜单项的子菜单又包含各个部分的子部分。
在ASP.NET 2.0以前,开发者典型地自己解决他们的站点导航功能.然而,ASP.NET 2.0使得定义一站点的结构并且使用普通导航用户接口元素实现它轻松极了。在本文中,我们将分析一下ASP.NET 2.0的站点导航特征。
二、 ASP.NET 1.x时代的站点导航
ASP.NET 版本1.x确实没有提供任何内置的站点导航支持;因此,大多数开发者实现他们自己的站点导航功能。在创建他们自己的站点导航功能时,开发者面临两个挑战:
1. 决定怎样把站点的结构信息串行化到一张站点地图中
2. 实现导航用户接口元素
为解决第一个问题,开发者们需要决定如何建模该站点的结构。要把这些信息放置到一个XML文件呢?还是添加一数据库表来存储站点的各个部分及其联系方式?对于支持用户帐户的站点,可能有只对属于特别角色的用户是可存取的部分。而且,支持多种语言的站点某种程度上都需要提供针对各个站点部分的翻译。
在决定需要存储什么信息来描述站点的结构以及这些信息怎样被串行化(数据库?XML文件?另外的东西?)以后,开发者还要面对第二个挑战-怎样向用户显示这个站点的结构。一个常用的导航用户接口元素是菜单;然而,ASP.NET 1.x中并没有提供内置的菜单Web控件-这意味着开发者要自己花钱购买或自己构建。
让我们总结一下,在ASP.NET版本1.x中实现站点导航并不是多么困难的任务;但是,这是必须要做的另外一个任务。而且,既然没有站点导航的内置支持,每个开发者可能会找到他自己的独特方法,这提高了开发新手学习曲线的陡峭程度-他们必须学习定制站点导航逻辑。
三、 ASP.NET 2.0中的站点导航
在ASP.NET 2.0中实现站点导航轻而易举,这归功于构建站点导航特征。内部地,ASP.NET提供了一组可编程API-用它可以进行站点地图查询。ASP.NET不需要为指定站点地图而提供特殊格式,尽管它确实提供了一种使用XML格式文件的缺省选择。关于怎样串行化站点地图的细节是可以被定制的,因为ASP.NET 2.0的站点导航特征使用一种提供者模型。该提供者模型使开发者能够定制一个特定ASP.NET分系统的内部实现-只要它们保持向前引用的API是相同的。
简言之,你可以使用ASP.NET 2.0的缺省的基于XML的方法来指定你的网站的站点地图,或仅加上一点编码,你就能使用现有的定制方法,或其它一些方法。(本文将讨论使用缺省的技术(基于XML和站点地图);本系统的后一篇文章将分析怎样定制站点导航提供者。)
除了提供一种可定制的手段来指定站点结构外,随同ASP.NET 2.0一起发行的还有一些导航Web控件-它们使得显示站点地图就象拖放一个控件到你的ASP.NET页面一样容易:
1. SiteMapPath-显示一个breadcrumb,用于显示终端用户处于相对于站点结构的具体位置。例如,在访问Amazon.com站点的Novels部分时,一个breadcrumb显示可能是这个样子:Home>Books>Novels。