Udostępnij za pośrednictwem


SiteMapNode Konstruktory

Definicja

Inicjuje SiteMapNode nowe wystąpienie klasy i kojarzy je z określonym SiteMapProvider obiektem.

Przeciążenia

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.

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key);
public SiteMapNode (System.Web.SiteMapProvider provider, string key);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String)

Parametry

provider
SiteMapProvider

Element SiteMapProvider , z którym jest skojarzony węzeł.

key
String

Klucz wyszukiwania specyficzny dla dostawcy.

Wyjątki

SiteMapProvider to null.

-lub-

key to null.

Uwagi

Klasa XmlSiteMapProvider , która jest domyślną SiteMapProvider implementacją dostawcy dla ASP.NET, używa SiteMapNode.Url właściwości jako klucza odnośnika, jeśli został podany dla węzła (jeśli nie podano adresu URL, identyfikator śledzenia jest generowany dla węzła). W związku z tym każda SiteMapNode kontrolka, która udostępnia adres URL i jest używana przez XmlSiteMapProvider element , musi mieć unikatowy adres URL w zakresie dostawcy.

Dotyczy

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String)

Parametry

provider
SiteMapProvider

Element SiteMapProvider , z którym jest skojarzony węzeł.

key
String

Klucz wyszukiwania specyficzny dla dostawcy.

url
String

Adres URL strony reprezentowanej przez węzeł w witrynie.

Wyjątki

SiteMapProvider to null.

-lub-

key to null.

Przykłady

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

Uwagi

Klasa XmlSiteMapProvider , która jest domyślną SiteMapProvider implementacją dostawcy dla ASP.NET, używa SiteMapNode.Url właściwości jako klucza odnośnika, jeśli został podany dla węzła (jeśli nie podano adresu URL, identyfikator śledzenia jest generowany dla węzła). W związku z tym każdy SiteMapNode obiekt, który udostępnia adres URL i jest używany przez XmlSiteMapProvider obiekt , musi mieć unikatowy adres URL w zakresie dostawcy.

Dotyczy

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String)

Parametry

provider
SiteMapProvider

Element SiteMapProvider , z którym jest skojarzony węzeł.

key
String

Klucz wyszukiwania specyficzny dla dostawcy.

url
String

Adres URL strony reprezentowanej przez węzeł w witrynie.

title
String

Etykieta węzła, często wyświetlana przez kontrolki nawigacji.

Wyjątki

SiteMapProvider to null.

-lub-

key to null.

Przykłady

W poniższym przykładzie kodu pokazano, jak użyć konstruktora SiteMapNode do utworzenia nowego wystąpienia SiteMapNode klasy. Węzeł jest inicjowany przy użyciu wartości z wiersza bazy danych programu Microsoft Access.

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

OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
   ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
if ( rootNodeReader->HasRows )
{
   rootNodeReader->Read();
   rootNodeId = rootNodeReader->GetInt32( 0 );
   
   // Create a SiteMapNode that references the current StaticSiteMapProvider.
   rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(), 
      rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
}
else
   return nullptr;
rootNodeReader->Close();

OleDbCommand rootNodeCommand =
    new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                     accessConnection);
OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

if(rootNodeReader.HasRows) {
    rootNodeReader.Read();
    rootNodeId = rootNodeReader.GetInt32(0);
    // Create a SiteMapNode that references the current StaticSiteMapProvider.
    rootNode   = new SiteMapNode(this,
                                 rootNodeId.ToString(),
                                 rootNodeReader.GetString(1),
                                 rootNodeReader.GetString(2));
}
else
{
    return null;
}

rootNodeReader.Close();
Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

If rootNodeReader.HasRows Then
    rootNodeReader.Read()
    rootNodeId = rootNodeReader.GetInt32(0)
    ' Create a SiteMapNode that references the current StaticSiteMapProvider.
    aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
Else
    Return Nothing
End If
rootNodeReader.Close()

Uwagi

Klasa XmlSiteMapProvider , która jest domyślną SiteMapProvider implementacją dostawcy dla ASP.NET, używa SiteMapNode.Url właściwości jako klucza odnośnika, jeśli został podany dla węzła (jeśli nie podano adresu URL, identyfikator śledzenia jest generowany dla węzła). W związku z tym każdy SiteMapNode obiekt, który udostępnia adres URL i jest używany przez XmlSiteMapProvider obiekt , musi mieć unikatowy adres URL w zakresie dostawcy.

Jeśli nie title zostanie podany, wywołania Title właściwości zwracają String.Empty pole.

Dotyczy

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title, string description);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String)

Parametry

provider
SiteMapProvider

Element SiteMapProvider , z którym jest skojarzony węzeł.

key
String

Klucz wyszukiwania specyficzny dla dostawcy.

url
String

Adres URL strony reprezentowanej przez węzeł w witrynie.

title
String

Etykieta węzła, często wyświetlana przez kontrolki nawigacji.

description
String

Opis strony reprezentowanej przez węzeł.

Wyjątki

SiteMapProvider to null.

-lub-

key to null.

Przykłady

W poniższym przykładzie kodu pokazano, jak używać konstruktora SiteMapNode do tworzenia SiteMapNode obiektu przez analizowanie danych z prostego pliku tekstowego w celu utworzenia mapy witryny w pamięci.

Ten przykład kodu jest częścią większego przykładu udostępnionego dla klasy abstrakcyjnej 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

Uwagi

Klasa XmlSiteMapProvider , która jest domyślną SiteMapProvider implementacją dostawcy dla ASP.NET, używa SiteMapNode.Url właściwości jako klucza odnośnika, jeśli został podany dla węzła (jeśli nie podano adresu URL, identyfikator śledzenia jest generowany dla węzła). W związku z tym każdy SiteMapNode obiekt, który udostępnia adres URL i jest używany przez XmlSiteMapProvider obiekt , musi mieć unikatowy adres URL w zakresie dostawcy.

Jeśli nie title zostanie podany element lub description zostanie podany, wywołania właściwości Title lub Description zwracają String.Empty pole.

Zobacz też

Dotyczy

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description, System::Collections::IList ^ roles, System::Collections::Specialized::NameValueCollection ^ attributes, System::Collections::Specialized::NameValueCollection ^ explicitResourceKeys, System::String ^ implicitResourceKey);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title, string description, System.Collections.IList roles, System.Collections.Specialized.NameValueCollection attributes, System.Collections.Specialized.NameValueCollection explicitResourceKeys, string implicitResourceKey);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string * System.Collections.IList * System.Collections.Specialized.NameValueCollection * System.Collections.Specialized.NameValueCollection * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String, roles As IList, attributes As NameValueCollection, explicitResourceKeys As NameValueCollection, implicitResourceKey As String)

Parametry

provider
SiteMapProvider

Element SiteMapProvider , z którym jest skojarzony węzeł.

key
String

Klucz wyszukiwania specyficzny dla dostawcy.

url
String

Adres URL strony reprezentowanej przez węzeł w witrynie.

title
String

Etykieta węzła, często wyświetlana przez kontrolki nawigacji.

description
String

Opis strony reprezentowanej przez węzeł.

roles
IList

Rola IList , która może wyświetlać stronę reprezentowaną przez element SiteMapNode.

attributes
NameValueCollection

Element z NameValueCollection dodatkowymi atrybutami służącymi do inicjowania obiektu SiteMapNode.

explicitResourceKeys
NameValueCollection

Jawne NameValueCollection klucze zasobów używane do lokalizacji.

implicitResourceKey
String

Niejawny klucz zasobu używany do lokalizacji.

Wyjątki

SiteMapProvider to null.

-lub-

key to null.

Uwagi

Klasa XmlSiteMapProvider , która jest domyślną SiteMapProvider implementacją dostawcy dla ASP.NET, używa SiteMapNode.Url właściwości jako klucza odnośnika, jeśli został podany dla węzła (jeśli nie podano adresu URL, identyfikator śledzenia jest generowany dla węzła). W związku z tym każdy SiteMapNode obiekt, który udostępnia adres URL i jest używany przez XmlSiteMapProvider obiekt , musi mieć unikatowy adres URL w zakresie dostawcy.

NameValueCollection Kolekcja atrybutów tworzonych SiteMapNode za pomocą elementu jest dostępna za pośrednictwem Attributes właściwości i ułatwia stosowanie dodatkowych atrybutów do węzła mapy witryny i rozszerzanie jej możliwości bez wyprowadzania niestandardowej klasy w tym celu.

IList Podaj kolekcję ról, aby udostępnić zestaw ról, które mogą wyświetlać węzeł, gdy SecurityTrimmingEnabled właściwość zwraca wartość true. Aby uzyskać więcej informacji, zobacz SecurityTrimmingEnabled.

Dostawca XmlSiteMapProvider używa SiteMapNode.Url właściwości jako klucza odnośnika. W związku z tym każdy SiteMapNode , który jest używany przez dostawcę XmlSiteMapProvider , musi mieć unikatowy adres URL w zakresie dostawcy.

Jeśli nie title zostanie podany element lub description zostanie podany, wywołania właściwości Title lub Description zwracają String.Empty pole.

Aby programowo określić zasoby na potrzeby lokalizacji, ustaw wartość implicitResourceKey unikatową nazwę, która będzie używana do identyfikowania zlokalizowanych zasobów dla węzła lub ustawiana explicitResourceKeysNameValueCollection na kolekcję name/value par, w których name właściwość węzła lub atrybut niestandardowy mają lokalizować i value zawiera wartości lokalizacji dla właściwości węzła lub atrybutu niestandardowego. Zlokalizowane wartości można następnie ustawić w odpowiednich plikach resx. Aby uzyskać więcej informacji na temat lokalizowania Titleobiektów , Descriptioni dowolnych właściwości niestandardowychSiteMapNode, zobacz How to: Localize Site-Map Data (Instrukcje: lokalizowanie danych Site-Map). Aby uzyskać informacje o wymaganiach składniowych explicitResourceKeys kolekcji, zobacz NameValueCollection.

Zobacz też

Dotyczy