Gewusst wie: Anzeigen von Siteübersichtsdaten in nicht hierarchischen Webserversteuerelementen

Aktualisiert: November 2007

Siteübersichtsdaten weisen naturgemäß eine hierarchische Struktur auf. Demnach kann jeder Knoten 0 (null) oder mehr untergeordnete Knoten enthalten. Das TreeView-Steuerelement und das Menu-Steuerelement wurden für die Arbeit mit hierarchischen Daten konzipiert. Sie können jedoch Siteübersichtsdaten auch an nicht hierarchische Steuerelemente binden, wie etwa das DropDownList-Steuerelement, das CheckBoxList-Steuerelement und andere Steuerelemente, die Daten linear oder in einem flachen Format anzeigen.

Hinweis:

Nur das SiteMapPath-Steuerelement und Steuerelemente, die die INavigateUIData-Schnittstelle unterstützen, rendern Siteübersichtsknoten als Links.

Beispiel

Im folgenden Codebeispiel werden die Siteübersichtsdaten aus der Datei Web.sitemap mithilfe eines DropDownList-Steuerelements angezeigt.

Wenn ein Client ein Element aus der Dropdownliste auswählt, wird der Browser auf die gewählte Seite umgeleitet. Dies geschieht durch Aufruf der Redirect-Methode im OnSelectedIndexChanged-Ereignishandler.

Wenn dieses Codebeispiel in eine Masterseite eingefügt wird, wird mittels der StartFromCurrentNode-Eigenschaft des SiteMapDataSource-Steuerelements gewährleistet, dass die Dropdownliste immer eine Siteübersicht anzeigt, die mit der aktuell ausgeführten Seite beginnt.

<%@ Page Language="VB"  AutoEventWireup="True" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
  Public Sub _OnSelectedIndexChanged(ByVal Sender As Object, ByVal e As EventArgs)
    Response.Redirect(DropDownList1.SelectedItem.Value)
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
          StartFromCurrentNode="true"
          ShowStartingNode="false" />
      <asp:DropDownList ID="DropDownList1" Runat="Server" 
          DataSourceID="SiteMapDataSource1"
          AutoPostBack="True" 
          DataTextField="Title" 
          DataValueField="Url"
          OnSelectedIndexChanged="_OnSelectedIndexChanged" >
      </asp:DropDownList>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
  void _OnSelectedIndexChanged(Object sender, EventArgs e)
  { 
    Response.Redirect(DropDownList1.SelectedItem.Value);
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>DropDownList Bound to SiteMapDataSource</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
          StartFromCurrentNode="true"
          ShowStartingNode="false" />
      <asp:DropDownList ID="DropDownList1" Runat="Server" 
          DataSourceID="SiteMapDataSource1"
          AutoPostBack="True" 
          DataTextField="Title" 
          DataValueField="Url"
          OnSelectedIndexChanged="_OnSelectedIndexChanged" >
      </asp:DropDownList>
    </div>
    </form>
</body>
</html>

Wenn die Seite keine untergeordneten Knoten enthält, bleibt die Dropdownliste leer. Wenn der Client ein Element auswählt, für das in der Datei Web.sitemap keine URL-Eigenschaft festgelegt ist, wird der Client auf die Startseite der Anwendung umgeleitet.

Kompilieren des Codes

  • Für dieses Beispiel ist eine gültige Web.sitemap-Datei erforderlich, die auf die das Codebeispiel enthaltende ASP.NET-Webseite verweist. Wenn Sie diesen Beispielcode in eine Datei einfügen, die nicht in einem der Knoten der Datei Web.sitemap aufgeführt ist, entfernen Sie die folgende Eigenschaft aus dem Steuerelement:

    StartFromCurrentNode="true"
    

Siehe auch

Aufgaben

Gewusst wie: Filtern der von SiteMapDataSource-Webserversteuerelementen abgerufenen Knoten

Konzepte

Übersicht über die ASP.NET-Sitenavigation

ASP.NET-Siteübersichten

Sichern der ASP.NET-Sitenavigation

Sichern des Datenzugriffs

Weitere Ressourcen

ASP.NET-Anwendungssicherheit in Hostumgebungen