Costruire e rendere infinito albero di categoria gerarchica dalla tabella delle categorie di auto-referenziale

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

Domanda

Ho una tabella Categories in cui ogni categoria ha un ParentId che può riferirsi a CategoryId di qualsiasi altra categoria che voglio display come lista HTML multi-livello, in questo modo:

<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>

Al momento sto ricorsivamente il rendering di una vista parziale e tramandare la categoria successiva. E le grandi opere, ma è sbagliato perché sono l'esecuzione di query in una visualizzazione.

Come posso rendere la lista in un oggetto albero e la cache per la visualizzazione rapida ogni volta che ho bisogno di un elenco di tutte le categorie gerarchiche?

È stato utile?

Soluzione

Crea una classe di visualizzazione modello che è autoreferenziale.

popolano nella classe modello appropriato (o forse nel vostro DataContext classe parziale) utilizzando la query si sta eseguendo nella vista.

Avvolgere il metodo che fa la query in un metodo che controlli e memorizza il risultato in Cache.

Assicurati di invalidare la cache ogni volta che vengono apportate modifiche alla struttura di categoria.

Se la query esegue un sacco di domande (uno per livello di albero), quindi prendere in considerazione ottenere il contenuto della tabella delle categorie, come una semplice lista e quindi utilizzando LINQ to Objects proiettare nella tua classe di visualizzazione del modello.

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