Cómo: Mostrar los datos de mapas de sitio de controles no jerárquicos de servidor web

Actualización: noviembre 2007

Los datos de los mapas de sitio son intrínsecamente jerárquicos, lo que significa que cada nodo puede contener cero o más nodos secundarios. Los controles TreeView y Menu se diseñan para que funcionen con datos jerárquicos. Sin embargo, es posible enlazar datos del mapa del sitio a controles no jerárquicos, como DropDownList, CheckBoxList y otros controles que muestran los datos en un formato lineal o plano.

Nota:

Sólo el control SiteMapPath y los controles que admiten la interfaz INavigateUIData representan los nodos del mapa del sitio como vínculos.

Ejemplo

En el ejemplo de código siguiente se utiliza un control DropDownList para mostrar los datos del mapa del sitio de un archivo Web.sitemap.

Cuando un cliente selecciona un elemento en la lista desplegable, el explorador se redirige a la página seleccionada. Para ello, se llama al método Redirect en el controlador de eventos OnSelectedIndexChanged.

Si este ejemplo de código se sitúa en una página principal, la propiedad StartFromCurrentNode del control SiteMapDataSource garantizará que en la lista desplegable aparezca siempre un mapa del sitio que comience en la página que se está ejecutando actualmente.

<%@ 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>

Si la página no contiene ningún nodo secundario, la lista desplegable estará vacía. Si el cliente selecciona un elemento para el que no hay ninguna propiedad URL definida en el archivo Web.sitemap, se redirigirá al cliente a la página principal de la aplicación.

Compilar el código

  • Los requisitos de este ejemplo son:

  • Un archivo Web.sitemap válido que haga referencia al archivo ASP.NET que contiene el ejemplo de código. Si sitúa este código de ejemplo en un archivo que no aparece en uno de los nodos del archivo Web.sitemap, quite la propiedad siguiente del control:

    StartFromCurrentNode="true"
    

Vea también

Tareas

Cómo: Filtrar los nodos recuperados por controles SiteMapDataSource de servidor Web

Conceptos

Información general sobre la exploración del sitio de ASP.NET

Mapas de sitio de ASP.NET

Proteger la exploración del sitio de ASP.NET

Proteger el acceso a datos

Otros recursos

Seguridad de aplicaciones ASP.NET en entornos alojados en host