SiteMap Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Klasa SiteMap jest reprezentacją w pamięci struktury nawigacji dla lokacji, która jest dostarczana przez co najmniej jednego dostawcę mapy witryny. Klasa ta nie może być dziedziczona.
public ref class SiteMap abstract sealed
public static class SiteMap
type SiteMap = class
Public Class SiteMap
- Dziedziczenie
-
SiteMap
Przykłady
Ten rozdział zawiera dwa przykłady kodu. W pierwszym przykładzie kodu pokazano, jak zadeklarować dostawcę mapy witryny w pliku Web.config. W drugim przykładzie kodu pokazano, jak używać SiteMap obiektu.
Poniższy przykład kodu to sekcja konfiguracji Web.config, która pokazuje, jak XmlSiteMapProvider obiekt jest zadeklarowany jako obiekt domyślny 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>
W poniższym przykładzie kodu pokazano, jak używać SiteMap obiektu przez uzyskanie dostępu do jego statycznych elementów członkowskich w celu wyświetlenia informacji o właściwościach RootNode i CurrentNode . Porównaj je z danymi wyjściowymi renderowaną przez kontrolkę 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>
Uwagi
Mapy witryny są używane w połączeniu SiteMapDataSourcez kontrolkami , SiteMapPathi innymi kontrolkami w celu renderowania efektywnego interfejsu nawigacyjnego dla użytkowników w celu nawigowania po witrynie sieci Web. Obiekt SiteMap jest składnikiem infrastruktury nawigacji ASP.NET lokacji, która zapewnia dostęp do informacji mapy witryny tylko do odczytu dla deweloperów stron i kontroli przy użyciu nawigacji i SiteMapDataSource kontrolek. Inne składniki infrastruktury nawigacji witryny ASP.NET obejmują SiteMapProvider klasy i XmlSiteMapProvider , plik Web.sitemap i różne kontrolki, które współpracują z klasą SiteMap , taką jak kontrolka SiteMapPath , do renderowania zawartości i menu.
Funkcja SiteMap ma kilka funkcji:
Udostępnia węzeł główny hierarchii nawigacji lokacji (może istnieć tylko jeden węzeł główny).
Określa, który dostawca mapy witryny jest podmiotem zabezpieczeń lub domyślnym dostawcą.
Śledzi wszystkie obiekty dostawcy, które są używane do utworzenia obiektu SiteMap.
Zasadniczo element SiteMap jest kontenerem dla hierarchicznej kolekcji SiteMapNode obiektów. Jednak obiekt SiteMap nie zachowuje relacji między węzłami, a raczej deleguje je do dostawców mapy lokacji. Element SiteMap działa jako interfejs do informacji nawigacji lokacji (w postaci SiteMapNode obiektów), które są przechowywane przez tych dostawców mapy witryny. Śledzi on dostawców, z których może uzyskiwać dostęp do danych nawigacji witryny i uwidaczniać swoją Providers kolekcję. Dostawca może przechowywać informacje o mapie witryny w dowolny sposób — o ile rozszerza klasę SiteMapProvider abstrakcyjną, SiteMap można ją pomyślnie zainicjować.
Domyślnym dostawcą klasy SiteMap jest XmlSiteMapProvider klasa, która współdziała z plikiem konfiguracji XML Web.sitemap. Można jednak napisać własny SiteMapProvider obiekt i użyć go do zainicjowania mapy witryny dla witryny. Aby zapoznać się z przykładem niestandardowego dostawcy mapy witryny, zobacz SiteMapProvider.
Zostanie określona domyślna konfiguracja mapy witryny, która zarządza konfiguracją nawigacji lokacji. Tę konfigurację można zastąpić w pliku Web.config, jeśli zdecydujesz się napisać własnego dostawcę mapy witryny.
Klasa SiteMap oferuje tylko statyczne składowe pod kątem wydajności i można uzyskać do niej dostęp w dowolnym momencie w danej witrynie za pomocą formularza internetowego lub kontrolki serwera sieci Web.
Właściwości
CurrentNode |
Pobiera kontrolkę reprezentującą SiteMapNode aktualnie żądaną stronę. |
Enabled |
Pobiera wartość logiczną wskazującą, czy dostawca mapy lokacji jest określony w pliku Web.config i czy dostawca mapy lokacji jest włączony. |
Provider |
Pobiera obiekt domyślny SiteMapProvider dla bieżącej mapy witryny. |
Providers |
Pobiera kolekcję tylko do odczytu nazwanych SiteMapProvider obiektów, które są dostępne dla SiteMap klasy. |
RootNode |
SiteMapNode Pobiera obiekt reprezentujący stronę najwyższego poziomu struktury nawigacji dla witryny. |
Zdarzenia
SiteMapResolve |
Występuje, gdy CurrentNode dostęp do właściwości jest uzyskiwany. |