SiteMapNode Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje uzel v hierarchické mapové struktuře webu, například ten, který je popsán třídou a třídami SiteMap , které implementují abstraktní SiteMapProvider třídu.
public ref class SiteMapNode : ICloneable, System::Web::UI::IHierarchyData, System::Web::UI::INavigateUIData
public class SiteMapNode : ICloneable, System.Web.UI.IHierarchyData, System.Web.UI.INavigateUIData
type SiteMapNode = class
interface ICloneable
interface IHierarchyData
interface INavigateUIData
Public Class SiteMapNode
Implements ICloneable, IHierarchyData, INavigateUIData
- Dědičnost
-
SiteMapNode
- Implementuje
Příklady
Tato část obsahuje dva příklady kódu. První příklad kódu ukazuje, jak vytvořit novou kolekci uzlů mapy webu a přidat do ní prvky. Druhý příklad kódu ukazuje, jak načíst data mapy webu z textového souboru.
Následující příklad kódu ukazuje, jak pomocí konstruktoru SiteMapNodeCollection vytvořit novou SiteMapNodeCollection kolekci a pak do ní přidat prvky pomocí Add metody .
// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();
// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();
// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;
while (index < siteMap.Rows.Count)
{
row = siteMap.Rows[index];
// Create a node based on the data in the DataRow.
tempNode = new SiteMapNode(SiteMap.Provider,
row["Key"].ToString(),
row["Url"].ToString());
// Add the node to the collection.
nodes.Add(tempNode);
++index;
}
' The LoadSiteMapData() Function loads site navigation
' data from persistent storage into a DataTable.
Dim siteMapData As DataTable
siteMapData = LoadSiteMapData()
' Create a SiteMapNodeCollection.
Dim nodes As New SiteMapNodeCollection()
' Create a SiteMapNode and add it to the collection.
Dim tempNode As SiteMapNode
Dim row As DataRow
Dim index As Integer
index = 0
While (index < siteMapData.Rows.Count)
row = siteMapData.Rows(index)
' Create a node based on the data in the DataRow.
tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())
' Add the node to the collection.
nodes.Add(tempNode)
index = index + 1
End While
Následující příklad kódu ukazuje, jak SimpleTextSiteMapProvider
parsuje textový soubor, který obsahuje data mapy webu v řetězcích oddělených čárkami. Nový SiteMapNode objekt je přidán do interních sledovacích kolekcí třídy pro každý řádek, který je načten ze souboru.
Tento příklad kódu je součástí většího příkladu SiteMapProvider pro třídu.
protected virtual void LoadSiteMapFromStore()
{
string pathToOpen;
lock (this)
{
// If a root node exists, LoadSiteMapFromStore has already
// been called, and the method can return.
if (rootNode != null)
{
return;
}
else
{
pathToOpen = HttpContext.Current.Server.MapPath("~" + "\\" + sourceFilename);
if (File.Exists(pathToOpen))
{
// Open the file to read from.
using (StreamReader sr = File.OpenText(pathToOpen))
{
// Clear the state of the collections and rootNode
rootNode = null;
siteMapNodes.Clear();
childParentRelationship.Clear();
// Parse the file and build the site map
string s = "";
string[] nodeValues = null;
SiteMapNode temp = null;
while ((s = sr.ReadLine()) != null)
{
// Build the various SiteMapNode objects and add
// them to the ArrayList collections. The format used
// is: URL,TITLE,DESCRIPTION,PARENTURL
nodeValues = s.Split(',');
temp = new SiteMapNode(this,
HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
nodeValues[1],
nodeValues[2]);
// Is this a root node yet?
if (null == rootNode &&
string.IsNullOrEmpty(nodeValues[3]))
{
rootNode = temp;
}
// If not the root node, add the node to the various collections.
else
{
siteMapNodes.Add(new DictionaryEntry(temp.Url, temp));
// The parent node has already been added to the collection.
SiteMapNode parentNode =
FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[3]);
if (parentNode != null)
{
childParentRelationship.Add(new DictionaryEntry(temp.Url, parentNode));
}
else
{
throw new Exception("Parent node not found for current node.");
}
}
}
}
}
else
{
throw new Exception("File not found");
}
}
}
return;
}
Protected Overridable Sub LoadSiteMapFromStore()
Dim pathToOpen As String
SyncLock Me
' If a root node exists, LoadSiteMapFromStore has already
' been called, and the method can return.
If Not (aRootNode Is Nothing) Then
Return
Else
pathToOpen = HttpContext.Current.Server.MapPath("~" & "\\" & sourceFilename)
If File.Exists(pathToOpen) Then
' Open the file to read from.
Dim sr As StreamReader = File.OpenText(pathToOpen)
Try
' Clear the state of the collections and aRootNode
aRootNode = Nothing
siteMapNodes.Clear()
childParentRelationship.Clear()
' Parse the file and build the site map
Dim s As String = ""
Dim nodeValues As String() = Nothing
Dim temp As SiteMapNode = Nothing
Do
s = sr.ReadLine()
If Not s Is Nothing Then
' Build the various SiteMapNode objects and add
' them to the ArrayList collections. The format used
' is: URL,TITLE,DESCRIPTION,PARENTURL
nodeValues = s.Split(","c)
temp = New SiteMapNode(Me, _
HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
nodeValues(1), _
nodeValues(2))
' Is this a root node yet?
If aRootNode Is Nothing AndAlso _
(nodeValues(3) Is Nothing OrElse _
nodeValues(3) = String.Empty) Then
aRootNode = temp
' If not the root node, add the node to the various collections.
Else
siteMapNodes.Add(New DictionaryEntry(temp.Url, temp))
' The parent node has already been added to the collection.
Dim parentNode As SiteMapNode = _
FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(3))
If Not (parentNode Is Nothing) Then
childParentRelationship.Add(New DictionaryEntry(temp.Url, parentNode))
Else
Throw New Exception("Parent node not found for current node.")
End If
End If
End If
Loop Until s Is Nothing
Finally
sr.Close()
End Try
Else
Throw New Exception("File not found")
End If
End If
End SyncLock
Return
End Sub
End Class
Poznámky
Objekt SiteMapNode představuje webovou stránku ve struktuře mapy webu. SiteMapNode objekty jsou načteny statickou SiteMap třídou za běhu pomocí jednoho nebo více zprostředkovatelů mapy webu k načtení dat mapy webu z trvalého úložiště do paměti. SiteMapNode objekty jsou zabaleny SiteMapNodeItem do třídy pro použití ovládacími prvky webového SiteMapPath serveru, jako je například ovládací prvek.
Třída SiteMapNode obsahuje několik vlastností, které se používají k popisu jedné stránky na webu, včetně vlastností, které popisují stránku, například Url, Titlea Description vlastnosti. Url Zatímco vlastnost je používána XmlSiteMapProvider třídou, což je výchozí zprostředkovatel mapy webu pro ASP.NET, jako vyhledávací klíč v interních kolekcích, které zprostředkovatel používá ke sledování uzlů, SiteMapNode třída podporuje základní Key vlastnost, kterou můžou poskytovatelé mapy webu použít ke sledování uzlů. Url Vlastnost je navíc používána navigačními ovládacími prvky k vykreslení hypertextových odkazů na stránky v rámci navigační struktury. Vlastnost Title je popisný název pro SiteMapNode, je často stejný jako název HTML webového formuláře a používá se navigační ovládacími prvky k vykreslení jednoduchých popisků. Nakonec je k dispozici kolekce dalších Attributes atributů pro zprostředkovatele mapy webu, NameValueCollection kteří používají SiteMapNode objekty, ale vyžadují další vlastnosti, které nejsou k dispozici v základní SiteMapNode třídě.
Konstruktory
SiteMapNode(SiteMapProvider, String) |
Inicializuje novou instanci SiteMapNode třídy pomocí zadané |
SiteMapNode(SiteMapProvider, String, String) |
Inicializuje novou instanci SiteMapNode třídy pomocí zadané adresy URL, |
SiteMapNode(SiteMapProvider, String, String, String) |
Inicializuje novou instanci SiteMapNode třídy pomocí zadané adresy URL, a |
SiteMapNode(SiteMapProvider, String, String, String, String) |
Inicializuje novou instanci SiteMapNode třídy pomocí zadané adresy URL, a identifikovat stránku, |
SiteMapNode(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String) |
Inicializuje novou instanci třídy pomocí zadaného SiteMapNode poskytovatele mapy webu, který spravuje uzel, adresu URL, název, popis, role, další atributy a explicitní a implicitní klíče prostředků pro lokalizaci. |
Vlastnosti
Attributes |
Získá nebo nastaví kolekci dalších atributů nad rámec silného typu vlastnosti, které jsou definovány pro SiteMapNode třídu. |
ChildNodes |
Získá nebo nastaví všechny podřízené uzly aktuálního SiteMapNode objektu z přidruženého SiteMapProvider zprostředkovatele. |
Description |
Získá nebo nastaví popis pro SiteMapNode. |
HasChildNodes |
Získá hodnotu určující, zda aktuální SiteMapNode má nějaké podřízené uzly. |
Item[String] |
Získá nebo nastaví vlastní atribut z Attributes kolekce nebo řetězec prostředku na základě zadaného klíče. |
Key |
Získá řetězec představující vyhledávací klíč pro uzel mapy webu. |
NextSibling |
Získá další SiteMapNode uzel na stejné hierarchické úrovni jako aktuální uzel vzhledem k ParentNode vlastnosti (pokud existuje). |
ParentNode |
Získá nebo nastaví SiteMapNode objekt, který je nadřazený aktuální uzel. |
PreviousSibling |
Získá předchozí SiteMapNode objekt na stejné úrovni jako aktuální objekt vzhledem k objektu ParentNode (pokud existuje). |
Provider |
SiteMapProvider Získá zprostředkovatel, podle SiteMapNode kterého je objekt sledován. |
ReadOnly |
Získá nebo nastaví hodnotu označující, zda lze upravit uzel mapy webu. |
ResourceKey |
Získá nebo nastaví klíč prostředku, který se používá k lokalizaci SiteMapNode. |
Roles |
Získá nebo nastaví kolekci rolí, které jsou přidruženy k objektu SiteMapNode , použité během oříznutí zabezpečení. |
RootNode |
Získá kořenový uzel kořenového zprostředkovatele v hierarchii zprostředkovatele mapy webu. Pokud neexistuje žádná hierarchie zprostředkovatelů, RootNode získá vlastnost kořenový uzel aktuálního zprostředkovatele. |
Title |
Získá nebo nastaví název objektu SiteMapNode . |
Url |
Získá nebo nastaví adresu URL stránky, kterou SiteMapNode objekt představuje. |
Metody
Clone() |
Vytvoří nový uzel, který je kopií aktuálního uzlu. |
Clone(Boolean) |
Vytvoří novou kopii, která je kopií aktuálního uzlu a volitelně klonuje všechny nadřazené a nadřazené uzly aktuálního uzlu. |
Equals(Object) |
Získá hodnotu označující, zda je aktuální SiteMapNode shodný se zadaným objektem. |
GetAllNodes() |
Načte kolekci jen pro čtení všech SiteMapNode objektů, které jsou potomky volajícího uzlu, bez ohledu na stupeň oddělení. |
GetDataSourceView(SiteMapDataSource, String) |
Načte SiteMapDataSourceView objekt, který je přidružen k aktuálnímu uzlu. |
GetExplicitResourceString(String, String, Boolean) |
Načte lokalizovaný řetězec na základě atributu SiteMapNode , který se má lokalizovat, výchozí řetězec, který se má vrátit, pokud není nalezen žádný prostředek, a logickou hodnotu označující, zda má být vyvolána výjimka, pokud není nalezen žádný prostředek. |
GetHashCode() |
Vrátí kód hash objektu SiteMapNode . |
GetHierarchicalDataSourceView() |
Načte SiteMapHierarchicalDataSourceView objekt, který je přidružen k aktuálnímu uzlu. |
GetImplicitResourceString(String) |
Získá lokalizovaný řetězec na základě názvu atributu a ResourceKey vlastnosti, která je určena SiteMapProvider , podle kterého SiteMapNode je sledována. |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
IsAccessibleToUser(HttpContext) |
Získá hodnotu označující, zda zadaný uzel mapy webu lze zobrazit uživatelem v zadaném kontextu. |
IsDescendantOf(SiteMapNode) |
Získá hodnotu označující, zda aktuální uzel mapy webu je podřízený nebo přímý potomek zadaného uzlu. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Převede hodnotu této instance SiteMapNode třídy na ekvivalentní řetězcovou reprezentaci. |
Explicitní implementace rozhraní
ICloneable.Clone() |
Vytvoří nový uzel, který je kopií aktuálního uzlu. Popis tohoto člena najdete v tématu Clone(). |
IHierarchyData.GetChildren() |
Načte hierarchické podřízené datové položky aktuální položky. Popis tohoto člena najdete v tématu GetChildren(). |
IHierarchyData.GetParent() |
Načte hierarchický nadřazený objekt aktuální položky. Popis tohoto člena najdete v tématu GetParent(). |
IHierarchyData.HasChildren |
Získá hodnotu, která označuje, zda aktuální SiteMapNode objekt má nějaké podřízené uzly. Popis tohoto člena najdete v tématu HasChildren. |
IHierarchyData.Item |
Získá položku hierarchických dat. Popis tohoto člena najdete v tématu Item. |
IHierarchyData.Path |
Získá cestu položky hierarchických dat. Popis tohoto člena najdete v tématu Path. |
IHierarchyData.Type |
Získá řetězec, který představuje typ název položky hierarchických dat. Popis tohoto člena najdete v tématu Type. |
INavigateUIData.Description |
Description Získá vlastnost uzlu mapy webu. Popis tohoto člena najdete v tématu Description. |
INavigateUIData.Name |
Title Získá vlastnost uzlu mapy webu. Popis tohoto člena najdete v tématu Name. |
INavigateUIData.NavigateUrl |
Url Získá vlastnost uzlu mapy webu. Popis tohoto člena najdete v tématu NavigateUrl. |
INavigateUIData.Value |
Title Získá vlastnost uzlu mapy webu. Popis tohoto člena najdete v tématu Value. |