Nyelv

SiteMapNode Osztály

Definíció

Egy csomópontot jelöl a hierarchikus helytérkép-struktúrában, például az absztrakt SiteMap osztályt megvalósító osztály és osztályok által SiteMapProvider leírt módon.

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
Öröklődés
SiteMapNode
Megvalósítás

Példák

Ez a szakasz két példakódot tartalmaz. Az első példakód bemutatja, hogyan hozhat létre új helytérkép-csomópontcsoportot, és hogyan adhat hozzá elemeket. A második példakód bemutatja, hogyan tölthet be helytérképadatokat egy szövegfájlból.

Az alábbi példakód bemutatja, hogyan hozhat létre új SiteMapNodeCollection gyűjteményt a SiteMapNodeCollection konstruktor használatával, majd hogyan adhat hozzá elemeket a Add metódussal.

// 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

Az alábbi példakód bemutatja, hogyan elemzi a SimpleTextSiteMapProvider helytérkép adatait tartalmazó szövegfájlt vesszővel tagolt sztringekben. A rendszer új SiteMapNode objektumot ad hozzá az osztály belső nyomkövetési gyűjteményéhez a fájlból beolvasott minden egyes sorhoz.

Ez a példakód egy nagyobb, az SiteMapProvider osztályhoz tartozó példa része.

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

Megjegyzések

Az SiteMapNode objektumok webhelytérkép-struktúrában lévő webhelylapokat jelölnek. SiteMapNode az objektumokat a statikus SiteMap osztály futtatáskor tölti be egy vagy több helyleképező szolgáltató használatával a helytérkép-adatok állandó tárolóból a memóriába való betöltéséhez. SiteMapNode az objektumokat az osztály burkolta a SiteMapNodeItem webkiszolgáló-vezérlők, például a SiteMapPath vezérlő által való használatra.

Az SiteMapNode osztály számos tulajdonságot tartalmaz, amelyek egy webhely egyetlen lapjának leírására szolgálnak, beleértve a lapokat leíró tulajdonságokat, például a Url, Titleés Description tulajdonságokat. Míg a Url tulajdonságot a XmlSiteMapProvider osztály használja, amely a ASP.NET alapértelmezett helytérkép-szolgáltatója, a csomópontok nyomon követésére használt belső gyűjtemények keresési kulcsaként, a SiteMapNode osztály egy alapszintű Key tulajdonságot támogat, amelyet a helytérkép-szolgáltatók a csomópontok nyomon követésére használhatnak. Emellett a Url navigációs vezérlők a tulajdonságot használják a navigációs struktúrán belüli oldalakra mutató hivatkozások megjelenítésére. A Title tulajdonság a SiteMapNodewebűrlap HTML-címével gyakran megegyezik, és a navigációs vezérlők egyszerű címkék megjelenítésére használják. Végül további NameValueCollection attribútumok gyűjteménye Attributes érhető el az objektumokat használó SiteMapNode helyleképező szolgáltatók számára, de olyan további tulajdonságokat igényelnek, amelyek nem érhetők el az alaposztályban SiteMapNode .

Konstruktorok

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

Inicializálja az SiteMapNode osztály új példányát a megadott helytérkép-szolgáltató használatával, amely kezeli a csomópontot, az URL-címet, a címet, a leírást, a szerepköröket, a további attribútumokat, valamint a honosítás explicit és implicit erőforráskulcsait.

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

Inicializálja az SiteMapNode osztály új példányát a megadott URL-címmel, a key csomópont által képviselt lap azonosításához, egy címmel és leírással, valamint a csomópontot kezelő helytérkép-szolgáltatóval.

SiteMapNode(SiteMapProvider, String, String, String)

Inicializálja az SiteMapNode osztály új példányát a megadott URL-címmel, a key csomópont által képviselt lap azonosításához, egy címmel és a csomópontot kezelő helylekép-szolgáltatóval.

SiteMapNode(SiteMapProvider, String, String)

Inicializálja az SiteMapNode osztály új példányát a megadott URL-cím, key a csomópont által képviselt lap és a csomópontot kezelő helytérkép-szolgáltató azonosításához.

SiteMapNode(SiteMapProvider, String)

Inicializálja az SiteMapNode osztály új példányát a megadottak key alapján a csomópont által képviselt lap és a csomópontot kezelő helytérkép-szolgáltató azonosításához.

Tulajdonságok

Name Description
Attributes

Az osztályhoz definiált, erősen gépelt tulajdonságokon túl további attribútumok gyűjteményét is lekéri vagy beállítja SiteMapNode .

ChildNodes

Lekéri vagy beállítja az aktuális SiteMapNode objektum összes gyermekcsomópontját a társított SiteMapProvider szolgáltatótól.

Description

Lekéri vagy beállítja a leírást a SiteMapNode.

HasChildNodes

Beolvas egy értéket, amely jelzi, hogy az aktuálisnak SiteMapNode vannak-e gyermekcsomópontjai.

Item[String]

Beolvas vagy beállít egy egyéni attribútumot a Attributes gyűjteményből vagy egy erőforrás-sztringből a megadott kulcs alapján.

Key

Lekéri a helytérkép-csomópont keresési kulcsát jelképező sztringet.

NextSibling

Lekéri a következő SiteMapNode csomópontot ugyanazon a hierarchikus szinten, mint az aktuális, a ParentNode tulajdonsághoz képest (ha van ilyen).

ParentNode

Lekéri vagy beállítja az SiteMapNode aktuális csomópont szülőobjektumát.

PreviousSibling

Az előző SiteMapNode objektum az aktuáliséval azonos szinten lesz lekérve az ParentNode objektumhoz képest (ha van ilyen).

Provider

Lekéri azt a SiteMapProvider szolgáltatót, amely nyomon követi az SiteMapNode objektumot.

ReadOnly

Lekéri vagy beállít egy értéket, amely jelzi, hogy a helyleképezési csomópont módosítható-e.

ResourceKey

Lekéri vagy beállítja a honosításhoz használt erőforráskulcsot SiteMapNode.

Roles

Lekéri vagy beállítja az SiteMapNode objektumhoz társított szerepkörök gyűjteményét a biztonsági vágás során.

RootNode

Lekéri a gyökérszolgáltató gyökércsomópontját egy helytérkép-szolgáltatói hierarchiában. Ha nincs szolgáltatói hierarchia, a RootNode tulajdonság lekéri az aktuális szolgáltató gyökércsomópontját.

Title

Lekéri vagy beállítja az SiteMapNode objektum címét.

Url

Lekéri vagy beállítja annak a lapnak az URL-címét, amelyet az SiteMapNode objektum képvisel.

Metódusok

Name Description
Clone()

Létrehoz egy új csomópontot, amely az aktuális csomópont másolata.

Clone(Boolean)

Létrehoz egy új másolatot, amely az aktuális csomópont másolata, opcionálisan klónozza az aktuális csomópont összes szülő- és őscsomópontjait.

Equals(Object)

Beolvas egy értéket, amely jelzi, hogy az áram SiteMapNode megegyezik-e a megadott objektummal.

GetAllNodes()

Lekéri az összes SiteMapNode objektum írásvédett gyűjteményét, amely a hívó csomópont leszármazottja, függetlenül az elkülönítés mértékétől.

GetDataSourceView(SiteMapDataSource, String)

Lekéri az SiteMapDataSourceView aktuális csomóponthoz társított objektumot.

GetExplicitResourceString(String, String, Boolean)

Lekéri a honosítandó attribútumon alapuló SiteMapNode honosított sztringet, egy alapértelmezett karakterláncot, amelyet akkor ad vissza, ha nem található erőforrás, és logikai érték, amely jelzi, hogy kivételt kell-e eredményeznie, ha nincs erőforrás.

GetHashCode()

Az objektum kivonatkódját SiteMapNode adja vissza.

GetHierarchicalDataSourceView()

Lekéri az SiteMapHierarchicalDataSourceView aktuális csomóponthoz társított objektumot.

GetImplicitResourceString(String)

Lekéri a honosított sztringet az attribútum neve és ResourceKey tulajdonsága alapján, amelyet a SiteMapProviderSiteMapNode nyomon követés alapjául szolgáló tulajdonság határoz meg.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsAccessibleToUser(HttpContext)

Beolvas egy értéket, amely jelzi, hogy a megadott helyleképezési csomópontot a felhasználó megtekintheti-e a megadott környezetben.

IsDescendantOf(SiteMapNode)

Beolvas egy értéket, amely jelzi, hogy az aktuális helyleképezési csomópont a megadott csomópont gyermek- vagy közvetlen leszármazottja-e.

MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az osztály ezen példányának értékét a SiteMapNode megfelelő sztring-ábrázolásúvá alakítja.

Explicit interfész-implementációk

Name Description
ICloneable.Clone()

Létrehoz egy új csomópontot, amely az aktuális csomópont másolata. Ennek a tagnak a leírását lásd Clone(): .

IHierarchyData.GetChildren()

Lekéri az aktuális elem hierarchikus gyermekadat-elemeit. Ennek a tagnak a leírását lásd GetChildren(): .

IHierarchyData.GetParent()

Az aktuális elem hierarchikus szülőjének lekérése. Ennek a tagnak a leírását lásd GetParent(): .

IHierarchyData.HasChildren

Olyan értéket kap, amely jelzi, hogy az aktuális SiteMapNode objektum rendelkezik-e gyermekcsomópontokkal. Ennek a tagnak a leírását lásd HasChildren: .

IHierarchyData.Item

Lekéri a hierarchikus adatelemet. Ennek a tagnak a leírását lásd Item: .

IHierarchyData.Path

Lekéri a hierarchikus adatelem elérési útját. Ennek a tagnak a leírását lásd Path: .

IHierarchyData.Type

Lekéri a hierarchikus adatelem típusnevét képviselő sztringet. Ennek a tagnak a leírását lásd Type: .

INavigateUIData.Description

Lekéri a Description helytérkép-csomópont tulajdonságát. Ennek a tagnak a leírását lásd Description: .

INavigateUIData.Name

Lekéri a Title helytérkép-csomópont tulajdonságát. Ennek a tagnak a leírását lásd Name: .

INavigateUIData.NavigateUrl

Lekéri a Url helytérkép-csomópont tulajdonságát. Ennek a tagnak a leírását lásd NavigateUrl: .

INavigateUIData.Value

Lekéri a Title helytérkép-csomópont tulajdonságát. Ennek a tagnak a leírását lásd Value: .

A következőre érvényes:

Lásd még