Condividi tramite


SiteMapNode Costruttori

Definizione

Inizializza una nuova istanza della classe SiteMapNode e la associa all'oggetto SiteMapProvider specificato.

Overload

SiteMapNode(SiteMapProvider, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'elemento key specificato per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.

SiteMapNode(SiteMapProvider, String, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.

SiteMapNode(SiteMapProvider, String, String, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo, un titolo e il provider della mappa del sito che gestisce il nodo.

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

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo, un titolo con descrizione e il provider della mappa del sito che gestisce il nodo.

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

Inizializza una nuova istanza della classe SiteMapNode usando il provider della mappa del sito specificato che gestisce il nodo, l'URL, il titolo, la descrizione, i ruoli, gli attributi aggiuntivi e le chiavi di risorsa esplicite e implicite per la localizzazione.

SiteMapNode(SiteMapProvider, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'elemento key specificato per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.

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)

Parametri

provider
SiteMapProvider

Elemento SiteMapProvider a cui è associato il nodo.

key
String

Chiave di ricerca specifica del provider.

Eccezioni

SiteMapProvider è null.

-oppure-

key è null.

Commenti

La XmlSiteMapProvider classe, che è l'implementazione predefinita SiteMapProvider del provider per ASP.NET, usa la SiteMapNode.Url proprietà come chiave di ricerca, se ne viene fornita una per il nodo (se non viene specificato un URL, viene generato un identificatore di rilevamento per il nodo). Pertanto, qualsiasi SiteMapNode controllo che fornisce un URL e viene usato da XmlSiteMapProvider deve avere un URL univoco all'interno dell'ambito del provider.

Si applica a

SiteMapNode(SiteMapProvider, String, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.

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)

Parametri

provider
SiteMapProvider

Elemento SiteMapProvider a cui è associato il nodo.

key
String

Chiave di ricerca specifica del provider.

url
String

URL della pagina rappresentata dal nodo all'interno del sito.

Eccezioni

SiteMapProvider è null.

-oppure-

key è null.

Esempio

Nell'esempio di codice seguente viene illustrato come usare il SiteMapNodeCollection costruttore per creare una nuova SiteMapNodeCollection raccolta e quindi aggiungere elementi al Add metodo.

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

Commenti

La XmlSiteMapProvider classe, che è l'implementazione predefinita SiteMapProvider del provider per ASP.NET, usa la SiteMapNode.Url proprietà come chiave di ricerca, se ne viene fornita una per il nodo (se non viene specificato un URL, viene generato un identificatore di rilevamento per il nodo). Pertanto, qualsiasi SiteMapNode oggetto che fornisce un URL e viene usato dall'oggetto XmlSiteMapProvider deve avere un URL univoco all'interno dell'ambito del provider.

Si applica a

SiteMapNode(SiteMapProvider, String, String, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo, un titolo e il provider della mappa del sito che gestisce il nodo.

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)

Parametri

provider
SiteMapProvider

Elemento SiteMapProvider a cui è associato il nodo.

key
String

Chiave di ricerca specifica del provider.

url
String

URL della pagina rappresentata dal nodo all'interno del sito.

title
String

Etichetta del nodo, spesso visualizzata nei controlli di navigazione.

Eccezioni

SiteMapProvider è null.

-oppure-

key è null.

Esempio

Nell'esempio di codice seguente viene illustrato come usare il SiteMapNode costruttore per creare una nuova istanza della SiteMapNode classe. Il nodo viene inizializzato con i valori di una riga di database di Microsoft Access.

Questo esempio di codice fa parte di un esempio più grande fornito per il BuildSiteMap metodo.

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()

Commenti

La XmlSiteMapProvider classe, che è l'implementazione predefinita SiteMapProvider del provider per ASP.NET, usa la SiteMapNode.Url proprietà come chiave di ricerca, se ne viene fornita una per il nodo (se non viene specificato un URL, viene generato un identificatore di rilevamento per il nodo). Pertanto, qualsiasi SiteMapNode oggetto che fornisce un URL e viene usato dall'oggetto XmlSiteMapProvider deve avere un URL univoco all'interno dell'ambito del provider.

Se non title viene specificato alcun elemento, le chiamate alla Title proprietà restituiscono il String.Empty campo.

Si applica a

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

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo, un titolo con descrizione e il provider della mappa del sito che gestisce il nodo.

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)

Parametri

provider
SiteMapProvider

Elemento SiteMapProvider a cui è associato il nodo.

key
String

Chiave di ricerca specifica del provider.

url
String

URL della pagina rappresentata dal nodo all'interno del sito.

title
String

Etichetta del nodo, spesso visualizzata nei controlli di navigazione.

description
String

Descrizione della pagina rappresentata dal nodo.

Eccezioni

SiteMapProvider è null.

-oppure-

key è null.

Esempio

Nell'esempio di codice seguente viene illustrato come usare il SiteMapNode costruttore per creare un SiteMapNode oggetto analizzando i dati da un file di testo semplice per creare una mappa del sito in memoria.

Questo esempio di codice fa parte di un esempio più grande fornito per la classe astratta 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

Commenti

La XmlSiteMapProvider classe, che è l'implementazione predefinita SiteMapProvider del provider per ASP.NET, usa la SiteMapNode.Url proprietà come chiave di ricerca, se ne viene fornita una per il nodo (se non viene specificato un URL, viene generato un identificatore di rilevamento per il nodo). Pertanto, qualsiasi SiteMapNode oggetto che fornisce un URL e viene usato dall'oggetto XmlSiteMapProvider deve avere un URL univoco all'interno dell'ambito del provider.

Se non title viene fornito alcun valore o description , le chiamate alle Title proprietà o Description restituiscono un String.Empty campo.

Vedi anche

Si applica a

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

Inizializza una nuova istanza della classe SiteMapNode usando il provider della mappa del sito specificato che gestisce il nodo, l'URL, il titolo, la descrizione, i ruoli, gli attributi aggiuntivi e le chiavi di risorsa esplicite e implicite per la localizzazione.

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)

Parametri

provider
SiteMapProvider

Elemento SiteMapProvider a cui è associato il nodo.

key
String

Chiave di ricerca specifica del provider.

url
String

URL della pagina rappresentata dal nodo all'interno del sito.

title
String

Etichetta del nodo, spesso visualizzata nei controlli di navigazione.

description
String

Descrizione della pagina rappresentata dal nodo.

roles
IList

Elemento IList per i ruoli autorizzati a visualizzare la pagina rappresentata dall'elemento SiteMapNode.

attributes
NameValueCollection

Elemento NameValueCollection di attributi aggiuntivi usati per inizializzare l'elemento SiteMapNode.

explicitResourceKeys
NameValueCollection

Elemento NameValueCollection di chiavi di risorsa esplicite usate per la localizzazione.

implicitResourceKey
String

Chiave di risorsa implicita usata per la localizzazione.

Eccezioni

SiteMapProvider è null.

-oppure-

key è null.

Commenti

La XmlSiteMapProvider classe, che è l'implementazione predefinita SiteMapProvider del provider per ASP.NET, usa la SiteMapNode.Url proprietà come chiave di ricerca, se ne viene fornita una per il nodo (se non viene specificato un URL, viene generato un identificatore di rilevamento per il nodo). Pertanto, qualsiasi SiteMapNode oggetto che fornisce un URL e viene usato dall'oggetto XmlSiteMapProvider deve avere un URL univoco all'interno dell'ambito del provider.

La NameValueCollection raccolta di attributi SiteMapNode creati con è disponibile tramite la proprietà e semplifica l'applicazione di attributi aggiuntivi a un nodo della Attributes mappa del sito ed estenderne le funzionalità senza derivare una classe personalizzata a tale scopo.

Specificare una IList raccolta di ruoli per fornire un set di ruoli che possono visualizzare il nodo quando la SecurityTrimmingEnabled proprietà restituisce true. Per altre informazioni, vedere SecurityTrimmingEnabled.

Il XmlSiteMapProvider provider usa la SiteMapNode.Url proprietà come chiave di ricerca. Pertanto, qualsiasi SiteMapNode oggetto utilizzato dall'oggetto XmlSiteMapProvider deve avere un URL univoco nell'ambito del provider.

Se non title viene fornito alcun valore o description , le chiamate alle Title proprietà o Description restituiscono un String.Empty campo.

Per specificare le risorse a livello di codice per la localizzazione, impostare il valore di implicitResourceKey su un nome univoco che verrà usato per identificare le risorse localizzate per il nodo o impostare explicitResourceKeys su una NameValueCollection raccolta di name/value coppie in cui name è la proprietà node o l'attributo personalizzato per localizzare e value contiene valori di localizzazione per la proprietà del nodo o l'attributo personalizzato. I valori localizzati possono quindi essere impostati nei file con estensione resx appropriati. Per altre informazioni su come localizzare , TitleDescriptione le proprietà personalizzate di un SiteMapNode oggetto, vedere Procedura: Localizzare Site-Map Dati. Per i requisiti di sintassi della explicitResourceKeys raccolta, vedere NameValueCollection.

Vedi anche

Si applica a