Создание и визуализация бесконечной иерархической категории Дерево из таблицы категорий самообслуживания
-
26-09-2019 - |
Вопрос
у меня есть Categories
таблица, в которой каждая категория имеет ParentId
которые могут ссылаться на любую другую категорию CategoryId
Что я хочу отобразить как многоуровневый список HTML, например:
<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>
В настоящее время я рекурсивно оказываю частичный вид и передаю следующую категорию. Работает отлично, но это неправильно, потому что я выполняю запросы с видом.
Как я могу сделать список в объекте дерева и кэшировать его для быстрого отображения каждый раз, когда мне нужен список всех иерархических категорий?
Решение
Создайте класс «Модель представления», который является самоссылкой.
Заполнить его в соответствующем классе модели (или, возможно, в вашем DataContext
Частичный класс) Использование запроса, которое вы выполняете в поле зрения.
Оберните метод, который делает запрос в методе, который проверяет и хранит результат в Cache
.
Убедитесь, что вы невернили кэш, когда внесены изменения в дерево категории.
Если запрос выполняет множество запросов (один уровень деревьев), затем рассмотрите возможность получения содержимого таблицы категории в качестве плоского списка, а затем с использованием Linq к объектам, чтобы проецировать его в класс модели просмотра.