ASP.NET 站点导航概述

更新:2007 年 11 月

您可以使用 ASP.NET 站点导航功能为用户导航站点提供一致的方法。随着站点内容的增加以及您在站点内来回移动网页,管理所有的链接可能会变得比较困难。ASP.NET 站点导航使您能够将指向所有页面的链接存储在一个中央位置,并在列表中呈现这些链接,或用一个特定 Web 服务器控件在每页上呈现导航菜单。

若要为站点创建一致的、容易管理的导航解决方案,可以使用 ASP.NET 站点导航。ASP.NET 站点导航提供下列功能:

  • 站点地图 您可以使用站点地图描述站点的逻辑结构。接着,可通过在添加或移除页面时修改站点地图(而不是修改所有网页的超链接)来管理页导航。

  • ASP.NET 控件 您可以使用 ASP.NET 控件在网页上显示导航菜单。导航菜单以站点地图为基础。

  • 编程控件 您可以以代码方式使用 ASP.NET 站点导航,以创建自定义导航控件或修改在导航菜单中显示的信息的位置。

  • 访问规则 您可以配置用于在导航菜单中显示或隐藏链接的访问规则。

  • 自定义站点地图提供程序 您可以创建自定义站点地图提供程序,以便使用自己的站点地图后端(如存储链接信息的数据库),并将提供程序插入到 ASP.NET 站点导航系统。

站点导航如何工作

通过 ASP.NET 站点导航,可以按层次结构描述站点的布局。例如,一家虚拟在线计算机商店的站点共有八页,其布局如下。

Home
   Products
      Hardware
      Software
   Services
      Training
      Consulting
      Support

若要使用站点导航,请先创建一个站点地图或站点的表示形式。您可以用 XML 文件描述站点的层次结构,但也可以使用其他方法。有关更多信息及示例,请参见 ASP.NET 站点地图

在创建站点地图后,可以使用站点导航控件在 ASP.NET 页上显示导航结构。有关示例,请参见如何:添加简单的站点导航

站点地图加载进程

默认的 ASP.NET 站点地图提供程序会加载站点地图数据作为 XML 文档,并在应用程序启动时将其作为静态数据进行缓存。超大型站点地图文件在加载时可能要占用大量的内存和 CPU 资源。ASP.NET 站点导航功能根据文件通知来使导航数据保持为最新的。更改站点地图文件时,ASP.NET 会重新加载站点地图数据。请确保将所有病毒扫描软件配置为不会修改站点地图文件。有关更多信息,请参见保证 ASP.NET 站点导航的安全

站点导航控件

创建一个反映站点结构的站点地图只完成了 ASP.NET 站点导航系统的一部分。导航系统的另一部分是在 ASP.NET 网页中显示导航结构,这样用户就可以在站点内轻松地移动。通过使用下列 ASP.NET 站点导航控件,您可以轻松地在页面中建立导航信息:

  • SiteMapPath 此控件显示导航路径(也称为面包屑或眉毛链接)向用户显示当前页面的位置,并以链接的形式显示返回主页的路径。此控件提供了许多可供自定义链接的外观的选项。

  • TreeView 此控件显示一个树状结构或菜单,让用户可以遍历访问站点中的不同页面。单击包含子节点的节点可将其展开或折叠。

  • Menu 此控件显示一个可展开的菜单,让用户可以遍历访问站点中的不同页面。将光标悬停在菜单上时,将展开包含子节点的节点。

如果在上述示例中将 SiteMapPath 控件添加到在线计算机商店的“Training”(培训)页中,SiteMapPath 控件将显示如下内容,其中“Home”(主页)和“Services”(服务)呈现为超链接的形式:

主页 > 服务 > 培训

您可以使用 SiteMapPath 控件创建站点导航,既不用编写代码,也不用显式绑定数据。此控件可自动读取和呈现站点地图信息。但是,如果需要,也可以使用代码自定义 SiteMapPath 控件。有关示例,请参见如何:以编程方式修改内存中的站点地图节点

SiteMapPath 控件使用户能够从当前页导航回站点层次结构中较高的页。但是,SiteMapPath 控件不允许从当前页向前导航到层次结构中较深的其他页面。在新闻组或留言板应用程序中,当用户想要查看他们正在浏览的文章的路径时,就可以使用 SiteMapPath 控件。

通过 TreeViewMenu 控件,用户可以打开节点并直接导航到特定的页。这些控件不会像 SiteMapPath 控件那样直接读取站点地图。相反,您需要在页上添加一个可读取站点地图的 SiteMapDataSource 控件。然后,将 TreeViewMenu 控件绑定到 SiteMapDataSource 控件,从而将站点地图呈现在该页上。TreeView 控件将显示如下的类似内容:

- Home

- Services

+ 培训

e468hxky.alert_note(zh-cn,VS.90).gif说明:

在站点中的所有页上显示 SiteMapPathTreeViewMenu 控件有一个简便方法,就是先创建一个母版页,然后将这些控件添加到该页上。有关更多信息,请参见 ASP.NET 母版页概述

站点导航 API

通过导航控件,您只需编写极少的代码甚至不需要代码,就可以在页面中添加站点导航;不过您也能以编程的方式处理站点导航。当 Web 应用程序运行时,ASP.NET 公开一个反映站点地图结构的 SiteMap 对象。SiteMap 对象的所有成员均为静态成员。而 SiteMap 对象会公开 SiteMapNode 对象的集合,这些对象包含地图中每个节点的属性。(在使用 SiteMapPath 控件时,该控件会使用 SiteMapSiteMapNode 对象自动呈现相应的链接。

您可以在自己的代码中使用 SiteMapSiteMapNodeSiteMapProvider 对象来遍历站点地图结构,或创建自定义的控件来显示站点地图数据。您不能向站点地图进行写入,但可以在对象的实例中修改站点地图节点。有关更多信息,请参见如何:以编程方式修改内存中的站点地图节点如何:以编程方式枚举站点地图节点

站点导航组件之间的关系

下面的示意图演示了各个 ASP.NET 站点导航组件之间的关系。

站点导航类之间的关系

请参见

任务

如何:以编程方式枚举站点地图节点

概念

ASP.NET 站点地图

保证 ASP.NET 站点导航的安全

保证数据访问的安全

其他资源

寄宿环境中的 ASP.NET 应用程序安全性