You need to enable JavaScript to run this app. .NET Core 5.0 如何实现不定层级嵌套分类展示?可否不使用Partial View
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 5.0 如何实现不定层级嵌套分类展示?可否不使用Partial View

不定层级分类列表非Partial View实现方案

完全可以不用Partial View实现需求,下面给出3种适配你当前邻接表分类结构的常用实现方案:

你使用的邻接表实体定义是存储不定层级分类的通用方案,结构正确:

public class Categories {
    public int ID { get; set; }
    public int ParentCatID { get; set; }
    public string CategoryName { get; set; }
    public string Instruction { get; set; }
}

方案1:Razor视图内递归渲染(改动最小)

直接在主Razor视图内定义递归委托生成HTML,不需要拆分Partial View,示例代码如下:

@model IEnumerable<Categories>
@{
    // 定义递归渲染委托
    Func<Categories, IHtmlContent> RenderCategoryNode = null;
    RenderCategoryNode = (currentCat) =>
    {
        // 查询当前分类的子分类
        var childCats = Model.Where(c => c.ParentCatID == currentCat.ID).ToList();
        // 生成当前分类li节点
        var liTag = new TagBuilder("li");
        liTag.InnerHtml.Append(currentCat.CategoryName);
        // 存在子分类则递归生成子节点ul
        if (childCats.Any())
        {
            var ulTag = new TagBuilder("ul");
            foreach (var child in childCats)
            {
                ulTag.InnerHtml.AppendHtml(RenderCategoryNode(child));
            }
            liTag.InnerHtml.AppendHtml(ulTag);
        }
        return liTag;
    };
}

<!-- 渲染根分类(根分类ParentCatID默认设为0,可根据你的实际规则调整) -->
<ul class="category-tree">
    @foreach (var rootCat in Model.Where(c => c.ParentCatID == 0))
    {
        @RenderCategoryNode(rootCat)
    }
</ul>

方案2:后端提前拼装嵌套结构

在Controller层先把平级的Categories列表转换为嵌套视图模型,视图直接遍历嵌套结构即可,不需要写递归逻辑:

  1. 先定义嵌套视图模型:
public class CategoryViewModel
{
    public int ID { get; set; }
    public string CategoryName { get; set; }
    public string Instruction { get; set; }
    // 子分类集合
    public List<CategoryViewModel> Children { get; set; } = new();
}
  1. Controller中递归拼装嵌套结构后传给视图,视图直接多层遍历即可。

方案3:前端JS递归渲染

后端将全量分类数据以JSON格式返回,前端写递归函数生成DOM插入页面,适合前后端分离架构的项目,渲染性能更高。

注意事项

  • 根分类的ParentCatID建议统一设为0或null,方便过滤查询
  • 如果分类层级特别深(超过100层),建议加递归深度限制,避免栈溢出

内容的提问来源于stack exchange,提问作者Fatih

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 10:36:08