Construire et rendre l'arbre de catégorie hiérarchique infinie de la table de catégorie autoréférentielle

StackOverflow https://stackoverflow.com/questions/2628964

Question

J'ai une table de Categories dans lequel chaque catégorie a une ParentId qui peut se référer à toute autre catégorie de la CategoryId que je veux afficher liste HTML multi-niveaux, comme suit:

<ul class="tree">
    <li>Parent Category
        <ul>
            <li>1st Child Category
                <!-- more sub-categories -->
            </li>
            <li>2nd Child Category
                <!-- more sub-categories -->
            </li>
        </ul>
    </li>
</ul>

Actuellement, je suis rendu récursive une vue partielle et en passant en bas de la catégorie suivante. Il fonctionne très bien, mais il ne va pas parce que je suis l'exécution de requêtes en vue.

Comment puis-je rendre la liste dans un objet de l'arborescence et le cache pour un affichage rapide chaque fois que je besoin d'une liste de toutes les catégories hiérarchiques?

Était-ce utile?

La solution

Créer une classe de modèle de vue qui est autoréférentiel.

Populate dans la classe modèle approprié (ou peut-être dans votre DataContext de classe partielle) à l'aide de la requête que vous exécutez dans la vue.

Enveloppez la méthode qui fait la requête dans une méthode qui vérifie et stocke le résultat dans Cache.

Assurez-vous que vous invalidez le cache à chaque fois que des modifications sont apportées à l'arbre de la catégorie.

Si la requête exécute un grand nombre de requêtes (un par niveau d'arbre), puis envisager d'obtenir le contenu de la table de la catégorie comme une liste plate puis LINQ aux objets pour le projeter dans votre vue classe modèle.

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