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 объект путем доступа к статическим элементам для отображения сведений RootNode о свойствах и CurrentNode свойствах. Сравните его с выходными данными, отображаемыми элементом 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>

Комментарии

Карты сайтов используются в сочетании с SiteMapDataSourceэлементами SiteMapPathуправления и другими элементами управления для отображения эффективного интерфейса навигации для пользователей для навигации по веб-сайту. Объект SiteMap является компонентом инфраструктуры навигации ASP.NET сайта, которая предоставляет доступ к сведениям карты сайта только для чтения для разработчиков страниц и управления с помощью элементов управления навигацией и SiteMapDataSource.>. Другие компоненты инфраструктуры навигации ASP.NET сайта включают классы SiteMapProvider и XmlSiteMapProvider, файл web.sitemap и различные элементы управления, которые работают с классом SiteMap, например элементом управления SiteMapPath для отображения содержимого и меню.

Имеет SiteMap несколько функций:

  • Он предоставляет корневой узел иерархии навигации сайта (может быть только один корневой узел).

  • Он определяет, какой поставщик карты сайта является субъектом или поставщиком по умолчанию.

  • Он отслеживает все объекты поставщика, используемые для создания SiteMap.

По сути, SiteMap контейнер для иерархической коллекции SiteMapNode объектов. SiteMap Однако отношения между узлами не поддерживаются. Вместо этого он делегирует это поставщикам карт сайта. Он SiteMap выступает в качестве интерфейса для сведений SiteMapNode о навигации сайта (в виде объектов), которые хранятся этими поставщиками карт сайта. Он отслеживает поставщиков, из которых он может получить доступ к данным навигации сайта и предоставляет свою коллекцию Providers . Поставщик может хранить сведения о карте сайта любым образом, если он расширяет SiteMapProvider абстрактный класс, SiteMap класс можно инициализировать успешно из него.

Поставщик по умолчанию для SiteMap класса — XmlSiteMapProvider это класс, который работает с XML-файлом конфигурации Web.sitemap. Однако вы можете написать собственный SiteMapProvider объект и использовать его для инициализации карты сайта для вашего сайта. Пример пользовательского поставщика карты сайта см. в статье SiteMapProvider.

Указана конфигурация карты сайта по умолчанию, которая управляет конфигурацией навигации сайта. Эту конфигурацию можно переопределить в файле Web.config, если вы решили написать собственный поставщик карты сайта.

Класс SiteMap предлагает только статические члены для производительности, и доступ к нему можно получить в любое время на определенном сайте из веб-формы или веб-сервера управления.

Свойства

Имя Описание
CurrentNode

SiteMapNode Возвращает элемент управления, представляющий запрошенную в данный момент страницу.

Enabled

Возвращает логическое значение, указывающее, указан ли поставщик карты сайта в файле Web.config и включен ли поставщик карты сайта.

Provider

Возвращает объект по умолчанию SiteMapProvider для текущей карты сайта.

Providers

Возвращает коллекцию именованных SiteMapProvider объектов, доступных SiteMap для класса только для чтения.

RootNode

SiteMapNode Возвращает объект, представляющий страницу верхнего уровня структуры навигации для сайта.

События

Имя Описание
SiteMapResolve

Происходит при доступе к свойству CurrentNode .

Применяется к

См. также раздел