Поделиться через


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.

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

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