Construir e render
-
26-09-2019 - |
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?
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.