J'ai besoin de remplir un contrôle de menu ASP.NET avec une structure hiérarchique avec des éléments de menu qui peuvent être modifiés en permanence, à partir d'une base de données (catégories avec n niveaux de sous-catégories).

Il existe des approches pour cela et j'aimerais savoir laquelle est la plus efficace.

J'ai ça en tête :

  1. Récupérer les données de la base de données et les convertir en XML, puis les transformer avec un fichier XSLT personnalisé et les lier au contrôle Menu
  2. Récupération des données de la base de données et en parcourant (récursif), insertion d'éléments de menu et d'enfants dans le contrôle de menu
  3. Fournisseur de plan de site SQL (merci à Made4Print)
  4. Autre chose?
2
markiz 1 août 2009 à 15:44

3 réponses

Meilleure réponse

Le contrôle de menu ASP.NET peut utiliser un fichier .SiteMap via un SiteMapDataSource.

Vous pouvez implémenter votre propre SiteMapProvider, de cette façon vous pouvez avoir votre hiérarchie SiteMap dans votre base de données et câbler les mêmes composants, ce qui rend les choses plus dynamiques.

Voici un exemple : http://weblogs.asp.net /scottgu/archive/2006/01/11/435108.aspx

HTH

3
Mark Redman 1 août 2009 à 17:57
C'est aussi une option. Je ne sais pas ce qui est le mieux :(
 – 
markiz
1 août 2009 à 20:57
Je suppose que le mieux est d'essayer une solution et de voir si cela fonctionne à votre satisfaction, et sinon, ou si vous avez assez de temps, essayez une seconde et comparez les résultats ; à la fois la quantité de travail pour créer et maintenir vos structures de menu, ainsi que le comportement d'exécution
 – 
marc_s
2 août 2009 à 01:39
J'ai déjà implémenté les 1 et 2, comment puis-je les comparer ?
 – 
markiz
2 août 2009 à 01:47
Mesurez la vitesse d'exécution, mesurez à quel point il est facile ou difficile pour vous d'apporter des modifications, etc.
 – 
marc_s
2 août 2009 à 12:09

Je suis d'accord avec Marc. Vous pouvez ensuite tout emballer dans un contrôle de serveur pour la réutilisation. Tout convertir en XML, puis utiliser XSLT pour le "convertir" en quelque sorte me semble une surcharge.

1
Juri 1 août 2009 à 15:56

Si vous voulez faire cela, je recommanderais certainement l'option 2, car elle contient un niveau de transformation de moins que l'option 1. Si vous parcourez déjà les éléments de menu et leurs hiérarchies, vous pouvez également créer directement les éléments de menu et les sous-éléments. - Je ne vois pas vraiment d'avantage à faire un détour par XML puis par XSLT dans une structure de menu, vraiment.

Marc

PS : L'option 3 (le fournisseur SQL Sitemap) semble également être une très bonne idée, si la structure et les options du plan du site vous conviennent (elles devraient généralement l'être). J'essaierais probablement cette option en premier, et à partir de là.

1
marc_s 2 août 2009 à 01:41
Mon seul souci est l'efficacité, les éléments du menu peuvent être constamment modifiés. Les éléments de menu sont supprimés ou déplacés (avec leurs enfants) entre les parents et etc. Cela nécessitera donc de reconstruire la structure du menu.
 – 
markiz
1 août 2009 à 16:14
Oui, bien sûr - mais cela est également vrai si vous convertissez d'abord la structure modifiée en XML et que vous utilisez XSLT dans la structure de menu réelle - je ne pense pas que vous gagnez quoi que ce soit en empruntant cette voie.
 – 
marc_s
2 août 2009 à 01:38