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>

下面的代码示例演示如何 SiteMap 通过访问对象的静态成员来显示有关 RootNodeCurrentNode 属性的信息。 将其与控件呈现的 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 发生。

适用于

另请参阅