Sdílet prostřednictvím


SiteMapNode Třída

Definice

Představuje uzel v hierarchické mapové struktuře webu, například popisované SiteMap třídou a třídami, 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í SiteMapNodeCollection konstruktoru vytvořit novou SiteMapNodeCollection kolekci a pak do ní přidat elementy 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. Do interních kolekcí třídy pro každý řádek, který je načten ze souboru, se přidá nový SiteMapNode objekt.

Tento příklad kódu je součástí většího příkladu uvedeného pro třídu SiteMapProvider.

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 stránku webu 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 třídou pro použití ovládacími prvky webového serveru, jako SiteMapPath je například ovládací prvek.

Třída SiteMapNode obsahuje několik vlastností, které slouží 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é poskytovatel používá ke sledování uzlů, SiteMapNode třída podporuje základní Key vlastnost, kterou můžou používat poskytovatelé map webů ke sledování uzlů. Kromě toho Url je vlastnost 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 SiteMapNode, je často stejný jako HTML název webového formuláře a používá navigační ovládací 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

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

Inicializuje novou instanci SiteMapNode třídy pomocí zadaného zprostředkovatele mapy webu, který spravuje uzel, adresu URL, název, popis, role, další atributy a explicitní a implicitní klíče prostředků pro lokalizaci.

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

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

SiteMapNode(SiteMapProvider, String, String, String)

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

SiteMapNode(SiteMapProvider, String, String)

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

SiteMapNode(SiteMapProvider, String)

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

Vlastnosti

Name Description
Attributes

Získá nebo nastaví kolekci dalších atributů nad rámec vlastností silného SiteMapNode typu, které jsou definovány pro třídu.

ChildNodes

Získá nebo nastaví všechny podřízené uzly aktuálního SiteMapNode objektu od 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ím uzlem.

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ředkovatele, podle kterého SiteMapNode 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í přidružených k objektu SiteMapNode , které se používají při oříznutí zabezpečení.

RootNode

Získá kořenový uzel kořenového zprostředkovatele v hierarchii zprostředkovatele mapy webu. Pokud žádná hierarchie zprostředkovatele neexistuje, RootNode získá vlastnost kořenový uzel aktuálního poskytovatele.

Title

Získá nebo nastaví název objektu SiteMapNode .

Url

Získá nebo nastaví adresu URL stránky, kterou SiteMapNode objekt představuje.

Metody

Name Description
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 určující, zda aktuální SiteMapNode je identický 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)

SiteMapDataSourceView Načte objekt přidružený k aktuálnímu uzlu.

GetExplicitResourceString(String, String, Boolean)

Načte lokalizovaný řetězec založený na atributu SiteMapNode pro lokalizaci, výchozí řetězec, který se vrátí, pokud se nenajde žádný prostředek, a logická hodnota označující, zda se má vyvolat výjimka, pokud se nenajde žádný prostředek.

GetHashCode()

Vrátí kód hash objektu SiteMapNode .

GetHierarchicalDataSourceView()

SiteMapHierarchicalDataSourceView Načte objekt 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án.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
IsAccessibleToUser(HttpContext)

Získá hodnotu určující, zda zadaný uzel mapy webu lze zobrazit uživatelem v zadaném kontextu.

IsDescendantOf(SiteMapNode)

Získá hodnotu urč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 Object.

(Zděděno od Object)
ToString()

Převede hodnotu této instance SiteMapNode třídy na ekvivalentní řetězcové vyjádření.

Explicitní implementace rozhraní

Name Description
ICloneable.Clone()

Vytvoří nový uzel, který je kopií aktuálního uzlu. Popis tohoto člena naleznete v tématu Clone().

IHierarchyData.GetChildren()

Načte hierarchické podřízené datové položky aktuální položky. Popis tohoto člena naleznete v tématu GetChildren().

IHierarchyData.GetParent()

Načte hierarchický nadřazený objekt aktuální položky. Popis tohoto člena naleznete v tématu GetParent().

IHierarchyData.HasChildren

Získá hodnotu, která určuje, zda aktuální SiteMapNode objekt má jakékoli podřízené uzly. Popis tohoto člena naleznete v tématu HasChildren.

IHierarchyData.Item

Získá hierarchickou položku dat. Popis tohoto člena naleznete v tématu Item.

IHierarchyData.Path

Získá cestu k hierarchické datové položce. Popis tohoto člena naleznete v tématu Path.

IHierarchyData.Type

Získá řetězec, který představuje název typu hierarchické datové položky. Popis tohoto člena naleznete v tématu Type.

INavigateUIData.Description

Description Získá vlastnost uzlu mapy webu. Popis tohoto člena naleznete v tématu Description.

INavigateUIData.Name

Title Získá vlastnost uzlu mapy webu. Popis tohoto člena naleznete v tématu Name.

INavigateUIData.NavigateUrl

Url Získá vlastnost uzlu mapy webu. Popis tohoto člena naleznete v tématu NavigateUrl.

INavigateUIData.Value

Title Získá vlastnost uzlu mapy webu. Popis tohoto člena naleznete v tématu Value.

Platí pro

Viz také