Создание и визуализация бесконечной иерархической категории Дерево из таблицы категорий самообслуживания

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

Вопрос

у меня есть 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 к объектам, чтобы проецировать его в класс модели просмотра.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top