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. |