SiteMapNode-Klasse
Assembly: System.Web (in system.web.dll)
Ein SiteMapNode-Objekt stellt die Seite einer Website in einer Siteübersichtsstruktur dar. SiteMapNode-Objekte werden zur Laufzeit von der statischen SiteMap-Klasse unter Verwendung eines oder mehrerer Siteübersichtsanbieter geladen, um Siteübersichtsdaten aus dem permanenten Speicher in den Arbeitsspeicher zu laden. SiteMapNode-Objekte werden von der SiteMapNodeItem-Klasse zur Verwendung durch Webserversteuerelemente eingeschlossen, z. B. durch das SiteMapPath-Steuerelement.
Die SiteMapNode-Klasse enthält mehrere Eigenschaften, mit denen eine einzelne Seite in einer Website beschrieben wird, einschließlich der Eigenschaften zum Beschreiben von Seiten wie UrlTitle und Description. Während die Url-Eigenschaft von der XmlSiteMapProvider-Klasse, die den Standardsiteübersichtsanbieter für ASP.NET darstellt, als Suchschlüssel in internen Auflistungen verwendet wird, die der Anbieter zur Knotenverfolgung verwendet, unterstützt die SiteMapNode-Klasse eine grundlegende Key-Eigenschaft, die von Siteübersichtsanbietern zur Verfolgung von Knoten verwendet werden kann. Darüber hinaus wird die Url-Eigenschaft von Navigationssteuerelementen verwendet, um Hyperlinks zu Seiten innerhalb einer Navigationsstruktur wiederzugeben. Die Title-Eigenschaft ist ein angezeigter Name für den SiteMapNode. Dieser ist häufig identisch mit dem HTML-Titel eines Web Forms und wird von Navigationssteuerelementen zur Wiedergabe von einfachen Bezeichnungen verwendet. Schließlich steht eine NameValueCollection-Auflistung mit zusätzlichen Attributes-Attributen für Siteübersichtsanbieter zur Verfügung, die zwar SiteMapNode-Objekte verwenden, jedoch zusätzliche Eigenschaften benötigen, die in der SiteMapNode-Basisklasse nicht verfügbar sind.
Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie eine neue Knotenauflistung einer Siteübersicht erstellt wird, der Elemente hinzugefügt werden. Im zweiten Codebeispiel wird veranschaulicht, wie Siteübersichtsdaten aus einer Textdatei geladen werden.
Im folgenden Codebeispiel wird veranschaulicht, wie mithilfe des SiteMapNodeCollection-Konstruktors eine neue SiteMapNodeCollection erstellt wird. Anschließend werden ihr mithilfe der Add-Methode Elemente hinzugefügt.
// 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; }
Im folgenden Codebeispiel wird veranschaulicht, wie der SimpleTextSiteMapProvider eine Textdatei analysiert, die Siteübersichtsdaten in durch Kommas getrennten Zeichenfolgen enthält. Ein neues SiteMapNode-Objekt wird den internen Trackingauflistungen der Klasse für jede Zeile hinzugefügt, die aus der Datei gelesen wird.
Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für die SiteMapProvider-Klasse.
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 && (null == nodeValues[3] || nodeValues[3] == String.Empty)) { 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; }
- AspNetHostingPermission für den Betrieb in einer Hostumgebung. Anforderungswert: LinkDemand; Berechtigungswert: Minimal.
- AspNetHostingPermission für den Betrieb in einer Hostumgebung. Anforderungswert: InheritanceDemand; Berechtigungswert: Minimal.
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
Microsoft .NET Framework 3.0 wird unter Windows Vista, Microsoft Windows XP SP2 und Windows Server 2003 SP1 unterstützt.