SiteMap 类

定义

SiteMap 类是站点的导航结构在内存中的表示形式,导航结构由一个或多个站点地图提供程序提供。 此类不能被继承。

public ref class SiteMap abstract sealed
public static class SiteMap
type SiteMap = class
Public Class SiteMap
继承
SiteMap

示例

本部分包含两个代码示例。 第一个代码示例演示如何在Web.config文件中声明站点地图提供程序。 第二个 SiteMap 代码示例演示如何使用 对象。

下面的代码示例是Web.config配置部分,演示如何 XmlSiteMapProvider 将对象声明为默认 SiteMapProvider 对象。

<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">  
  <providers>  
    <add name="MyXmlSiteMapProvider"  
      description="The site map provider that reads in the .sitemap XML files."  
      type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"  
      siteMapFile="my.sitemap" />  
  </providers>  
</siteMap>  

下面的代码示例演示如何通过访问对象的静态成员来显示有关 RootNodeCurrentNode 属性的信息来使用 SiteMap 对象。 将其与 控件呈现 SiteMapPath 的输出进行比较。

<%@ Page language="c#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title + "<br />");
    Response.Write("<font COLOR='red'>" + SiteMap.CurrentNode.Url + "</font><br />");

    // What nodes are children of the CurrentNode?
    if (SiteMap.CurrentNode.HasChildNodes) {
        IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator();
        while (childNodesEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(childNodesEnumerator.Current.ToString() + "<br />");
        }
    }
    Response.Write("<hr />");

    // Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title + "<br />");
    Response.Write(SiteMap.RootNode.Url + "<br />");

    // What nodes are children of the RootNode?
    if (SiteMap.RootNode.HasChildNodes) {
        IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator();
        while (rootNodesChildrenEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<br />");
        }
    }

}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
      <asp:SiteMapPath
          runat="server"
        ID="SiteMapPath1"
        ShowToolTips="false"/>
    </form>
  </body>
</html>
<%@ Page language="VB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
Private Sub Page_Load(sender As Object, e As System.EventArgs)

  ' Examine the CurrentNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.CurrentNode.Title & "<br />")
  Response.Write("<font COLOR='red'>" & SiteMap.CurrentNode.Url & "</font><br />")

  ' What nodes are children of the CurrentNode?
  If (SiteMap.CurrentNode.HasChildNodes) Then
      Dim childNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()

      While (childNodesEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(childNodesEnumerator.Current.ToString() & "<br />")
      End While

  End If
  Response.Write("<hr />")

  ' Examine the RootNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.RootNode.Title & "<br />")
  Response.Write(SiteMap.RootNode.Url & "<br />")

  ' What nodes are children of the RootNode?
  If (SiteMap.RootNode.HasChildNodes) Then
      Dim rootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
      While (rootNodesChildrenEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(rootNodesChildrenEnumerator.Current.ToString() & "<br />")
      End While
  End If

End Sub ' Page_Load
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:SiteMapPath
            runat="server"
          ID="SiteMapPath1"
          ShowToolTips="false"/>

    </form>
  </body>
</html>

注解

网站地图与 SiteMapDataSourceSiteMapPath和其他控件结合使用,以呈现有效的导航界面,供用户浏览网站。 SiteMap对象是 ASP.NET 网站导航基础结构的组件,它为使用导航SiteMapDataSource和控件的页面和控件开发人员提供对只读站点地图信息的访问权限。 ASP.NET 网站导航基础结构的其他组件包括 SiteMapProviderXmlSiteMapProvider 类、Web.sitemap 文件以及用于 SiteMap 呈现内容和菜单的类的各种控件,如 SiteMapPath 控件。

具有 SiteMap 多个函数:

  • 它提供站点导航层次结构的根节点, () 只能有一个根节点。

  • 它标识哪个站点地图提供程序是主体提供程序或默认提供程序。

  • 它跟踪用于创建 SiteMap的所有提供程序对象。

从根本上说, SiteMap 是对象的分层集合的 SiteMapNode 容器。 但是, SiteMap 不维护节点之间的关系;而是将其委托给站点地图提供程序。 充当 SiteMap 站点导航信息的接口, (这些站点地图提供程序持有的对象 SiteMapNode) 的形式。 它跟踪可访问网站导航数据的提供程序,并公开其 Providers 集合。 提供程序可以以任何方式存储其站点地图信息 - 只要它扩展 SiteMapProvider 了抽象类, SiteMap 就可以从该类成功初始化该类。

类的默认提供程序 SiteMapXmlSiteMapProvider 类,它适用于 XML 配置文件 Web.sitemap。 但是,您可以编写自己的 SiteMapProvider 对象,并使用它来初始化站点的站点地图。 有关自定义站点地图提供程序的示例,请参阅 SiteMapProvider

指定用于管理站点导航配置的默认站点地图配置。 如果选择编写自己的站点地图提供程序,则可以在 Web.config 文件中替代此配置。

SiteMap 仅提供静态成员以提升性能,并且可以随时从 Web 窗体或 Web 服务器控件在给定站点中对其进行访问。

属性

CurrentNode

获取一个表示当前被请求的页的 SiteMapNode 控件。

Enabled

获取一个布尔值,该值指示 Web.config 文件中是否指定了某个站点地图提供程序,以及是否启用了该站点地图提供程序。

Provider

获取当前站点地图的默认 SiteMapProvider 对象。

Providers

获取对 SiteMapProvider 类可用的命名 SiteMap 对象的只读集合。

RootNode

获取一个表示站点的导航结构的顶级页的 SiteMapNode 对象。

事件

SiteMapResolve

当访问 CurrentNode 属性时发生。

适用于

另请参阅