ASP.NET MVC 4 генерирует древовидное представление с рекурсивным частичным представлением

У меня есть частичное представление в проекте MVC 4, который строго типизирован. Требуется IEnumerable коллекция таблицы базы данных. В этой таблице есть идентификаторы, имена и идентификаторы родителей для хранения иерархической связи между записями. Представление, которое вызывает частичное представление, также строго типизировано, оно берет всю базу данных в качестве модели и передает таблицу Categories в частичное представление как перечисляемую коллекцию:

@Html.Partial("_TreeCategories", @Model.Categories.ToList())

А в частичном представлении я хочу сначала взять корневые узлы, чтобы я мог рекурсивно расширить все дерево. В таблице базы данных все записи рассматриваются как корневые узлы с нулевым ParentID ==.

В общем, мой способ сделать это будет выглядеть так:

@model IEnumerable

@if (Model.ToList().Count >= 0)
    {
    @if (Model.ToList()[0].Parent_id == null)
    {
        
    }

    @foreach (var node in @Model)
    {
        <a href="[email protected]">@node.Name</a>
            @foreach (var subNode in @Model.Where(s => s.Parent_id == node.Id))
            {
                @Html.Partial("_TreeCategories", subNode)
            }
        
    }
    @if (Model.ToList()[0].Parent_id == null)
    {
        
    }
}

Поэтому я проверяю, если первый элементs ParentID модели равен нулю, и если это так, то он должен создать < уль> тег с идентификатором "навигация»поэтому плагин jquery может распознать, что он предназначен для управления древовидной структурой. Затем он создает тег списка с рекурсивным вызовом внутри. Рекурсивно вызванное частичное представление берет дочерние узлы в качестве модели. И, наконец, если мы добрались до конца частичного представлениярендеринга, и мы находимся накорневой уровень ", он должен написать закрытие < уль> тег

Однако есть некоторые проблемы. Во-первых, в конце, что закрытие тега неупорядоченного списка неверно, VS может 'найти соответствующий начальный тег для этого. Во-вторых, я нене знаю почему, но сверху я могу поставить стартер < уль> тег между тегами, и я могусделать это в закрывающем теге ниже. Но я'я не уверен в этом < ul> теги тоже, я чувствую, что они тоже не правы.



Пожалуйста, помогите мне, яЯ застрял с этим в течение нескольких дней.

Ответы на вопрос(2)

Ваш ответ на вопрос