Pergunta

Base de dados?Variáveis ​​de página?Enum?

Estou procurando opiniões aqui.

Foi útil?

Solução

O recurso ASP.NET Sitemap foi criado para isso e funciona bem em muitos casos.Se você chegar em um lugar onde deseja que seu O menu terá uma aparência diferente do seu Sitemap. Aqui estão algumas soluções alternativas.

Se você tiver uma estrutura de site dinâmica, poderá crie um provedor de sitemap personalizado.Você pode chegar ao ponto em que é mais problemático do que vale a pena, mas, em geral, preencher o menu a partir do mapa do site oferece alguns recursos interessantes, como corte de segurança, em que as opções do menu são apropriadas para o usuário logado.

Outras dicas

Essa é uma questão interessante, há muitas maneiras de abordá-la.

Você pode carregar a estrutura do menu a partir de XML, é assim que funciona a configuração interna dos controles de navegação/mapa do site do ASP.NET.Esta é provavelmente uma boa escolha no geral, e há ferramentas razoavelmente boas para isso no Visual Studio.

Se for um menu dinâmico que precisa mudar muito, obter os itens de um banco de dados pode ser uma boa ideia, mas você definitivamente gostaria de armazená-los em cache, para que o banco de dados não seja atingido em todas as renderizações de página.

Eu criei um site usando o Controles de login do ASP.NET e Autenticação de formulários para associação/credenciais para um aplicativo da web ASP.NET.E estou usando um Mapa do site para navegação no site.

Eu tenho controles de navegação ASP.NET TreeView e Menu preenchidos usando um SiteMapDataSource.Mas as páginas exclusivas para administradores fora dos limites são visíveis para usuários não administradores.

  1. Criei um arquivo de mapa do site web.sitemap.E eu usou a ferramenta de administração de sites ASP.NET para configurar regras de acesso.

  2. Adicionei controles de navegação na minha página .master…

    <asp:SiteMapPath ID="SiteMapPath1" runat="server" />
    <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource2" />
    <asp:TreeView ID="TreeView1" runat="server"  DataSourceID="SiteMapDataSource1" />
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
    <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" ShowStartingNode="False" />
    
  3. Eu configurei securityTrimmingEnabled como "true" em meu arquivo web.config…

    <?xml version="1.0"?>
    <configuration>
        ...
        <system.web>
            ...
            <siteMap defaultProvider="default">
                <providers>
                    <clear/>
                    <add name="default"
                        type="System.Web.XmlSiteMapProvider"
                        siteMapFile="web.sitemap"
                        securityTrimmingEnabled="true"/>
                </providers>
            </siteMap>
            ...
        </system.web>
        ...
    </configuration>
    
  4. Ajustei a árvore no arquivo master.vb code-behind…

    Protected Sub TreeView1_DataBound( ByVal sender As Object, ByVal e As EventArgs ) Handles TreeView1.DataBound
    
        'Collapse unnecessary menu items...
        If TreeView1.SelectedNode IsNot Nothing Then
            Dim n As TreeNode = TreeView1.SelectedNode
            TreeView1.CollapseAll()
            n.Expand()
            Do Until n.Parent Is Nothing
                n = n.Parent
                n.Expand()
            Loop
        Else
            TreeView1.ExpandAll()
        End If
    
    End Sub
    

SE o menu for dinâmico por usuário então você terá que acessar o banco de dados de cada usuário.A partir de então, provavelmente o armazenaria em sessão para evitar futuras viagens de ida e volta ao banco de dados.

Se for dinâmico, mas todo o site vê os mesmos itens, coloque-o no banco de dados e armazene os resultados em cache

Vincular a um Sitemap é certamente o mais fácil.

Depende inteiramente de como o site funciona.Concordo com a maioria que um mapa do site geralmente é a melhor maneira de fazer isso.No entanto, se você estiver usando um CMS, talvez seja necessário mantê-lo no banco de dados.Se você tiver um site centrado na taxonomia, use a taxonomia para construir o menu.Não existe a “melhor forma” de navegar, apenas a melhor forma para uma determinada situação.

Temos um recurso semelhante.

O menu da aplicação é carregado na página mestra do banco de dados, pois as opções visíveis do menu dependem das permissões do usuário.

Algumas convenções e uma estrutura inteligente no banco de dados garantem que o código de carregamento do menu seja genérico e navegue automaticamente para a tela adequada após a seleção de uma determinada opção de menu.Usamos UIP para navegar e ComponentArt para controles da web.

A propósito, ComponentArt é uma merda.Então, novamente, suponho que todas as bibliotecas de controle de terceiros o façam.

O acesso eficiente é um recurso primordial do ponto de vista do usuário.Uma abordagem sugestiva genérica épesquisa de dicionário, isso também se encaixa bem em estruturas de menu grandes e aninhadas.O usuário navega por cliques ou pressionamentos únicos de teclas, adicionalmente as teclas de seta avançam (direita) ou voltam (esquerda) com cima/baixo como de costume.Sugiro preencher os menus mediante solicitação, exceto o inicial, e fornecer uma ação javascript, sempre que um elemento final for selecionado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top