Question

Base de données?La Page des variables?Enum?

Je suis à la recherche d'avis ici.

Était-ce utile?

La solution

L'ASP.NET Sitemap fonctionnalité est construit et fonctionne bien dans beaucoup de cas.Si vous vous trouvez dans un endroit où vous voulez que votre Menu à un aspect différent de votre Sitemap, voici quelques solutions de contournement.

Si vous avez un site dynamique de la structure, vous pouvez créer un sitemap fournisseur.Vous pouvez arriver au point où il est plus d'ennuis que cela vaut la peine, mais en général, le remplissage de votre menu à partir de votre sitemap vous donne quelques fonctionnalités intéressantes comme l'ajustement de la sécurité, dans laquelle le menu des options appropriées pour l'utilisateur connecté.

Autres conseils

C'est une question intéressante, il y a beaucoup de manières de l'aborder.

Vous pouvez charger la structure de menu à partir de XML, c'est la façon dont le haut-ASP.NET les contrôles de navigation/"sitemap" le programme d'installation fonctionne.C'est probablement un bon choix dans l'ensemble, et il est raisonnablement bon outillage pour elle dans Visual Studio.

Si c'est un menu dynamique qui a besoin de changer beaucoup de choses, d'obtenir les éléments à partir d'une base de données pourrait être une bonne idée, mais vous ne voulez certainement à mettre en cache, de sorte que le DB n'est pas de se faire frapper sur chaque page de rendu.

J'ai créé un site à l'aide de la ASP.NET les Contrôles de Connexion et L'Authentification Par Formulaires pour les membres/les informations d'identification pour un ASP.NET application web.Et je suis en utilisant un plan du site pour la navigation sur le site.

J'ai ASP.NET l'Arborescence et la navigation dans le Menu commandes remplis à l'aide d'un SiteMapDataSource.Mais hors des limites de l'administrateur uniquement les pages sont visibles pour les utilisateurs non-administrateurs.

  1. J'ai créé un site web.sitemap, plan du site fichier.Et Je utilisé l'ASP.NET Site Web de l'Outil d'Administration pour définir les règles d'accès.

  2. J'ai ajouté des contrôles de navigation sur mon .page maître...

    <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. J'ai mis securityTrimmingEnabled à "true" dans mon web.fichier de 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. J'ai ajusté l'arbre dans le maître.vb fichier 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
    

SI le menu est dynamique par utilisateur ensuite, vous aurez à frapper, la base de données pour chaque utilisateur.À partir de là, je serais probablement le stocker dans la session pour éviter les aller-retours à la base de données.

Si c'est dynamique, mais l'ensemble du site voit les mêmes éléments, puis le mettre dans la base de données et mettre en cache les résultats

La liaison à un Sitemap est certainement le plus simple.

Il dépend entièrement de la façon dont le site fonctionne.Je suis d'accord avec la plupart qu'un sitemap est généralement la meilleure façon de le faire.Toutefois, si vous utilisez un CMS, alors vous pourriez avoir besoin de le garder dans la base de données.Si vous avez une taxonomie centrée sur le site, puis d'utiliser la taxonomie pour construire le menu.Il n'y a pas de "meilleure façon" de faire de la navigation, seule la meilleure façon pour une situation donnée.

Nous avons une fonctionnalité similaire.

Le menu de l'application est chargée dans la page principale de la base de données, car visible dans le menu options dépendent les autorisations de l'utilisateur.

Un couple de conventions et intelligent sur la structure de la base de données de s'assurer que le menu de chargement de code est générique et navigue automatiquement à la bonne de l'écran lors de la sélection d'un certain option de menu.Nous utilisons l'UIP à naviguer et ComponentArt pour les contrôles web.

BTW ComponentArt suce.Puis, de nouveau, je suppose que tous les tiers de contrôle de bibliothèques.

Un accès efficace est une fonction primordiale d'un point de vue utilisateur.Un générique suggestive approche est recherche dans le dictionnaire, qui s'adapte bien pour les grands et imbriqués les structures de menus trop.L'utilisateur navigue par des clics uniques ou des combinaisons de touches, de plus les touches fléchées l'avance (à droite) ou de revenir en arrière (à gauche) avec haut/bas comme d'habitude.Je vous suggère de remplir les menus sur demande, à l'exception de la première et de fournir une action javascript, chaque fois qu'un dernier élément est sélectionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top