Прочитать на английском

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


SiteMap Класс

Определение

Класс SiteMap — это хранимое в памяти представление структуры переходов узла, которая предоставляется одним или несколькими поставщиками карты веб-узла. Этот класс не наследуется.

C#
public static 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 управления .

ASP.NET (C#)
<%@ 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>

Комментарии

Карты сайтов используются в сочетании 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.

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

Продукт Версии
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

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