Sdílet prostřednictvím


SiteMapNode Třída

Definice

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é key k identifikaci stránky, kterou uzel představuje, a zprostředkovatele mapy webu, který spravuje uzel.

SiteMapNode(SiteMapProvider, String, String)

Inicializuje novou instanci SiteMapNode třídy pomocí zadané adresy URL, key a k identifikaci stránky, kterou uzel představuje, a poskytovatele mapy webu, který spravuje uzel.

SiteMapNode(SiteMapProvider, String, String, String)

Inicializuje novou instanci SiteMapNode třídy pomocí zadané adresy URL, a key identifikovat stránku, kterou uzel představuje, název a zprostředkovatele mapy webu, který spravuje uzel.

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

Inicializuje novou instanci SiteMapNode třídy pomocí zadané adresy URL, a identifikovat stránku, key kterou uzel představuje, název a popis a zprostředkovatele mapy webu, který spravuje uzel.

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.

Platí pro

Viz také