Domanda

Database?Variabili della pagina?Enum?

Sto cercando pareri qui.

È stato utile?

Soluzione

Il ASP.NET Sitemap funzione è costruito e funziona bene in un sacco di casi.Se si arriva in un punto in cui volete che il vostro Menu per un aspetto diverso dalla Sitemap, ecco alcune soluzioni alternative.

Se si dispone di una dinamica struttura del sito, è possibile creare un custom sitemap provider.Si potrebbe arrivare al punto in cui è più problemi che ne vale la pena, ma, in generale, popolando i menu dalla sitemap offre alcune caratteristiche interessanti come la sicurezza, il taglio, in cui le opzioni di menu sono appropriati per l'utente connesso.

Altri suggerimenti

Questa è una domanda interessante, ci sono un sacco di modi per avvicinarsi ad esso.

Si potrebbe caricare la struttura di menu di XML, il built-in ASP.NET controlli di navigazione/"sitemap" del programma di installazione.Questo è probabilmente una buona scelta in generale, e non c'è abbastanza buono, utensili per farlo in Visual Studio.

Se si tratta di un menu dinamico che deve cambiare un sacco, di ottenere gli oggetti da un database potrebbe essere una buona idea, ma si sarebbe sicuramente desidera memorizzare nella cache, in modo che il DB non essere colpito su ogni pagina di rendering.

Ho creato un sito utilizzando il ASP.NET Controlli di Accesso e Forme Di Autenticazione per i soci credenziali per un ASP.NET applicazione web.E sto usando un mappa del sito per la navigazione del sito.

Ho ASP.NET TreeView e la navigazione del Menu controlli popolato con un SiteMapDataSource.Ma off-limits per il solo amministratore pagine sono visibili agli utenti non amministratori.

  1. Ho creato un web.sitemap mappa del sito di file.E Io utilizzato il ASP.NET Strumento Amministrazione Sito Web per impostare le regole di accesso.

  2. Ho aggiunto i controlli di navigazione sul mio .pagina 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. Ho impostato securityTrimmingEnabled a "true" nel mio web.file di configurazione...

    <?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. Ho regolato l'albero maestro.codice vb dietro di file...

    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 il menu è dinamico per utente quindi dovrete premere il database per ogni utente.Da allora in poi avrei probabilmente conservarla in sessione, per evitare in futuro di andata e ritorno per il database.

Se è dinamico, ma l'intero sito si vede lo stesso, e poi metterlo nel database della cache e i risultati

Associazione per una Sitemap è sicuramente il metodo più semplice.

Dipende interamente da come funziona il sito.Sono d'accordo con la maggior parte che una sitemap è di solito il modo migliore per farlo.Tuttavia, se si utilizza un CMS, quindi potrebbe essere necessario mantenere nel database.Se si dispone di una tassonomia-centric sito, quindi utilizzare la tassonomia per creare il menu.Non c'è nessun "modo migliore" per fare di navigazione, solo il modo migliore per una determinata situazione.

Abbiamo una funzionalità simile.

Il menu dell'applicazione è caricato sulla pagina master dal database, perché visibile menu opzioni dipendono dalle autorizzazioni dell'utente.

Un paio di convenzioni e intelligente struttura di database, assicurarsi che il menu codice di caricamento è generico e automaticamente si sposta sullo schermo appropriata dopo la selezione di una determinata opzione di menu.Usiamo UIP per navigare e ComponentArt per i controlli web.

BTW ComponentArt fa schifo.Poi, di nuovo, suppongo di terzi, di controllo di librerie.

Accesso efficiente è una primordiale funzione dal punto di vista dell'utente.Un generico suggestivo approccio è dizionario di ricerca, che si adatta bene per grandi e menu nidificati strutture di troppo.L'utente si sposta da clic o unici tasti, inoltre i tasti freccia avanti (a destra) o tornare indietro (a sinistra) con up/down, come al solito.Suggerisco di compilare il menu su richiesta ad eccezione di quello iniziale e fornire un javascript azione, ogni volta che un ultimo elemento è selezionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top