SiteMapNode Klasa

Definicja

Reprezentuje węzeł w strukturze hierarchicznej mapy lokacji, taki jak opisany przez SiteMap klasę i klasy, które implementują klasę abstrakcyjną SiteMapProvider .

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
Dziedziczenie
SiteMapNode
Implementuje

Przykłady

Ten rozdział zawiera dwa przykłady kodu. W pierwszym przykładzie kodu pokazano, jak utworzyć nowy zbiór węzłów mapy witryny i dodać do niego elementy. W drugim przykładzie kodu pokazano, jak załadować dane mapy witryny z pliku tekstowego.

W poniższym przykładzie kodu pokazano, jak użyć konstruktora SiteMapNodeCollection do utworzenia nowej SiteMapNodeCollection kolekcji, a następnie dodać do niej elementy za Add pomocą 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

Poniższy przykład kodu przedstawia sposób SimpleTextSiteMapProvider analizowania pliku tekstowego zawierającego dane mapy witryny w ciągach rozdzielanych przecinkami. Nowy SiteMapNode obiekt jest dodawany do wewnętrznych kolekcji śledzenia klasy dla każdego wiersza odczytanego z pliku.

Ten przykład kodu jest częścią większego przykładu udostępnionego SiteMapProvider dla klasy .

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

Uwagi

Obiekt SiteMapNode reprezentuje stronę witryny sieci Web w strukturze mapy witryny. SiteMapNode obiekty są ładowane przez klasę statyczną SiteMap w czasie wykonywania przy użyciu co najmniej jednego dostawcy mapy witryny w celu załadowania danych mapy lokacji z magazynu trwałego do pamięci. SiteMapNode obiekty są opakowane przez klasę SiteMapNodeItem do użycia przez kontrolki serwera sieci Web, takie jak kontrolka SiteMapPath .

Klasa SiteMapNode zawiera kilka właściwości, które są używane do opisywania pojedynczej strony w witrynie sieci Web, w tym właściwości opisujące stronę, takie jak Url, Titlei Description właściwości. Url Podczas gdy właściwość jest używana przez XmlSiteMapProvider klasę, która jest domyślnym dostawcą mapy witryny dla ASP.NET, jako klucz wyszukiwania w kolekcjach wewnętrznych używanych przez dostawcę do śledzenia węzłów, klasa obsługuje podstawową Key właściwość, SiteMapNode która może być używana przez dostawców mapy lokacji do śledzenia węzłów. Url Ponadto właściwość jest używana przez kontrolki nawigacji do renderowania hiperlinków do stron w strukturze nawigacji. Właściwość Title jest przyjazną nazwą elementu SiteMapNode, jest często taka sama jak tytuł HTML formularza internetowego i jest używana przez kontrolki nawigacji do renderowania prostych etykiet. NameValueCollection Na koniec kolekcja dodatkowych Attributes atrybutów jest dostępna dla dostawców mapy lokacji korzystających z SiteMapNode obiektów, ale wymagają dodatkowych właściwości, które nie są dostępne w klasie bazowejSiteMapNode.

Konstruktory

SiteMapNode(SiteMapProvider, String)

Inicjuje nowe wystąpienie SiteMapNode klasy przy użyciu określonej key metody w celu zidentyfikowania strony reprezentowanej przez węzeł i dostawcy mapy witryny, który zarządza węzłem.

SiteMapNode(SiteMapProvider, String, String)

Inicjuje nowe wystąpienie SiteMapNode klasy przy użyciu określonego adresu URL, a key w celu zidentyfikowania strony reprezentowanej przez węzeł oraz dostawcy mapy witryny, który zarządza węzłem.

SiteMapNode(SiteMapProvider, String, String, String)

Inicjuje nowe wystąpienie SiteMapNode klasy przy użyciu określonego adresu URL, a key w celu zidentyfikowania strony reprezentowanej przez węzeł, tytułu i dostawcy mapy witryny, który zarządza węzłem.

SiteMapNode(SiteMapProvider, String, String, String, String)

Inicjuje nowe wystąpienie SiteMapNode klasy przy użyciu określonego adresu URL, a key w celu zidentyfikowania strony reprezentowanej przez węzeł, tytułu i opisu oraz dostawcy mapy witryny, który zarządza węzłem.

SiteMapNode(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String)

Inicjuje nowe wystąpienie SiteMapNode klasy przy użyciu określonego dostawcy mapy witryny, który zarządza węzłem, adresem URL, tytułem, opisem, rolami, dodatkowymi atrybutami oraz jawnymi i niejawnymi kluczami zasobów na potrzeby lokalizacji.

Właściwości

Attributes

Pobiera lub ustawia kolekcję dodatkowych atrybutów wykraczających poza silnie typizowane właściwości zdefiniowane dla SiteMapNode klasy.

ChildNodes

Pobiera lub ustawia wszystkie węzły podrzędne bieżącego SiteMapNode obiektu od skojarzonego SiteMapProvider dostawcy.

Description

Pobiera lub ustawia opis elementu SiteMapNode.

HasChildNodes

Pobiera wartość wskazującą, czy bieżący SiteMapNode ma jakiekolwiek węzły podrzędne.

Item[String]

Pobiera lub ustawia atrybut niestandardowy z Attributes kolekcji lub ciągu zasobu na podstawie określonego klucza.

Key

Pobiera ciąg reprezentujący klucz wyszukiwania dla węzła mapy witryny.

NextSibling

Pobiera następny SiteMapNode węzeł na tym samym poziomie hierarchicznym co bieżący względem ParentNode właściwości (jeśli istnieje).

ParentNode

Pobiera lub ustawia SiteMapNode obiekt, który jest elementem nadrzędnym bieżącego węzła.

PreviousSibling

Pobiera poprzedni SiteMapNode obiekt na tym samym poziomie co bieżący względem ParentNode obiektu (jeśli istnieje).

Provider

Pobiera dostawcę SiteMapProvider , przez który SiteMapNode obiekt jest śledzony.

ReadOnly

Pobiera lub ustawia wartość wskazującą, czy można zmodyfikować węzeł mapy witryny.

ResourceKey

Pobiera lub ustawia klucz zasobu używany do lokalizowania obiektu SiteMapNode.

Roles

Pobiera lub ustawia kolekcję ról, które są skojarzone z obiektem SiteMapNode , używane podczas przycinania zabezpieczeń.

RootNode

Pobiera węzeł główny dostawcy głównego w hierarchii dostawcy mapy lokacji. Jeśli żadna hierarchia dostawcy nie istnieje, RootNode właściwość pobiera węzeł główny bieżącego dostawcy.

Title

Pobiera lub ustawia tytuł SiteMapNode obiektu.

Url

Pobiera lub ustawia adres URL strony reprezentowanej przez SiteMapNode obiekt.

Metody

Clone()

Tworzy nowy węzeł, który jest kopią bieżącego węzła.

Clone(Boolean)

Tworzy nową kopię, która jest kopią bieżącego węzła, opcjonalnie klonowanie wszystkich węzłów nadrzędnych i węzłów nadrzędnych bieżącego węzła.

Equals(Object)

Pobiera wartość wskazującą, czy bieżący SiteMapNode jest identyczny z określonym obiektem.

GetAllNodes()

Pobiera kolekcję tylko do odczytu wszystkich SiteMapNode obiektów, które są elementami podrzędnymi węzła wywołującego, niezależnie od stopnia separacji.

GetDataSourceView(SiteMapDataSource, String)

SiteMapDataSourceView Pobiera obiekt skojarzony z bieżącym węzłem.

GetExplicitResourceString(String, String, Boolean)

Pobiera zlokalizowany ciąg na SiteMapNode podstawie atrybutu do lokalizowania, ciąg domyślny do zwrócenia, jeśli nie znaleziono zasobu, i wartość logiczna wskazująca, czy zgłosić wyjątek, jeśli nie znaleziono zasobu.

GetHashCode()

Zwraca kod skrótu SiteMapNode obiektu.

GetHierarchicalDataSourceView()

SiteMapHierarchicalDataSourceView Pobiera obiekt skojarzony z bieżącym węzłem.

GetImplicitResourceString(String)

Pobiera zlokalizowany ciąg na podstawie nazwy atrybutu i ResourceKey właściwości określonej przez SiteMapProvider element , przez który SiteMapNode jest śledzony.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsAccessibleToUser(HttpContext)

Pobiera wartość wskazującą, czy określony węzeł mapy witryny może być wyświetlany przez użytkownika w określonym kontekście.

IsDescendantOf(SiteMapNode)

Pobiera wartość wskazującą, czy bieżący węzeł mapy witryny jest elementem podrzędnym, czy bezpośrednim elementem potomnym określonego węzła.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Konwertuje wartość tego wystąpienia SiteMapNode klasy na równoważną reprezentację ciągu.

Jawne implementacje interfejsu

ICloneable.Clone()

Tworzy nowy węzeł, który jest kopią bieżącego węzła. Aby uzyskać opis tego członka, zobacz Clone().

IHierarchyData.GetChildren()

Pobiera hierarchiczne elementy danych elementów podrzędnych bieżącego elementu. Aby uzyskać opis tego członka, zobacz GetChildren().

IHierarchyData.GetParent()

Pobiera hierarchiczny element nadrzędny bieżącego elementu. Aby uzyskać opis tego członka, zobacz GetParent().

IHierarchyData.HasChildren

Pobiera wartość wskazującą, czy bieżący SiteMapNode obiekt ma jakiekolwiek węzły podrzędne. Aby uzyskać opis tego członka, zobacz HasChildren.

IHierarchyData.Item

Pobiera element danych hierarchicznych. Aby uzyskać opis tego członka, zobacz Item.

IHierarchyData.Path

Pobiera ścieżkę elementu danych hierarchicznych. Aby uzyskać opis tego członka, zobacz Path.

IHierarchyData.Type

Pobiera ciąg reprezentujący nazwę typu elementu danych hierarchicznych. Aby uzyskać opis tego członka, zobacz Type.

INavigateUIData.Description

Description Pobiera właściwość węzła mapy witryny. Aby uzyskać opis tego członka, zobacz Description.

INavigateUIData.Name

Title Pobiera właściwość węzła mapy witryny. Aby uzyskać opis tego członka, zobacz Name.

INavigateUIData.NavigateUrl

Url Pobiera właściwość węzła mapy witryny. Aby uzyskać opis tego członka, zobacz NavigateUrl.

INavigateUIData.Value

Title Pobiera właściwość węzła mapy witryny. Aby uzyskać opis tego członka, zobacz Value.

Dotyczy

Zobacz też