Como: Exibir dados de um MAP de site em controles de servidor Web não hierárquicos

Dados de mapa de sites são inerentemente hierárquicos, o que significa que cada nó pode conter zero ou mais nós filho.Os controles TreeView e Menu são projetados para trabalhar com dados hierárquicos.No entanto, você pode vincular dados de mapa de sites a controles não hierárquico, como o DropDownList, CheckBoxList e outros controles que exibem dados em um formato linear, ou simples.

Observação:

Somente o controle SiteMapPath e controles que suportam a interface INavigateUIData renderização nós do mapa do site como links.

Exemplo

O exemplo de código a seguir usa um controle DropDownList para exibir os dados do mapa do site de um arquivo Web.sitemap.

Quando um cliente seleciona um item na lista suspensa, o navegador é redirecionado à página selecionada.Isso é feito chamando o método Redirect no manipulador de eventos OnSelectedIndexChanged.

Se este exemplo de código é colocado em um página mestra, então, a propriedade StartFromCurrentNode no controle SiteMapDataSource garantirá que a lista suspensa sempre exiba uma mapa do site que comece na página atualmente em execução.

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

Se a página não contiver nenhum nó filho, então a lista suspensa estará vazia.Se o cliente seleciona um item para o qual não há nenhuma propriedade URL definida no arquivo Web.sitemap, então o cliente é redirecionado para o home page do aplicativo.

Compilando o código

  • Esse exemplo requer um arquivo Web.sitemap válido que faz referência a página ASP.NET da Web que contém o exemplo de código.Se você colocar esse exemplo de código em um arquivo que não esteja listado em um de nós o arquivo Web.sitemap, remova a seguinte propriedade do controle:

    StartFromCurrentNode="true"
    

Consulte também

Tarefas

Como: Filtrar os nós recuperados por controles de servidor Web SiteMapDataSource

Conceitos

Visão geral sobre navegação em sites do ASP.NET

Mapas do Site do ASP.NET

Tornando navegação em sites do ASP.NET seguro

Proteção de acesso a dados

Outros recursos

Segurança de aplicativos ASP.NET em ambientes hospedados