Pergunta

eu tenho um Categories tabela em que cada categoria tem um ParentId que pode se referir a qualquer outra categoria CategoryId Que eu quero exibir como lista HTML de vários níveis, assim:

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

Atualmente, estou retornando recursivamente a uma visão parcial e passando a próxima categoria. Funciona muito bem, mas está errado porque estou executando consultas em uma visão.

Como posso renderizar a lista em um objeto de árvore e armazená -lo em exibição rápida toda vez que preciso de uma lista de todas as categorias hierárquicas?

Foi útil?

Solução

Crie uma classe de modelo de exibição que seja auto -referencial.

Preencha -o na classe modelo apropriada (ou talvez em seu DataContext classe parcial) usando a consulta que você está executando na visualização.

Enrole o método que faz a consulta em um método que verifica e armazena o resultado em Cache.

Certifique -se de invalidar o cache sempre que as alterações forem feitas na árvore da categoria.

Se a consulta executar muitas consultas (uma por nível de árvore), considere obter o conteúdo da tabela de categoria como uma lista plana e, em seguida, usando o LINQ para objetos para projetá -la na sua classe Model Model.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top