首页 / 问答 / [.NET/.NET Core]ASP.NET Core Razor Pages应用程序中如何使用递归遍历输出无限层级的树形菜单结构呢?

[.NET/.NET Core]ASP.NET Core Razor Pages应用程序中如何使用递归遍历输出无限层级的树形菜单结构呢?

0

在C#/.NET的应用程序编程开中,使用递归遍历输出无限层级的树形菜单是比较常见的需求,实现方式也随着应用场景不同而不同,现需要在ASP.NET Core Razor Pages的应用程序中,使用递归的方式直接在Razor Pages页面输出树形层级结构,应该如何呢,要求得到的树形HTML结构类似如下:

<ul class="tree-sample">
    <li class="collapsible open">
        <span title="子节点数(3)">一级菜单01 (3)</span>
        <ul>
            <li class="collapsible open">
                <span title="子节点数(2)">二级菜单0101 (2)</span>
                <ul>
                    <li>
                        <span>
                            <a href="" title="三级菜单010101">三级菜单010101</a>
                        </span>
                    </li>
                    <li>
                        <span>
                            <a href="" title="三级菜单010102">三级菜单010102</a>
                        </span>
                    </li>
                </ul>
            </li>
            <li>
                <span>
                    <a href="" title="二级菜单0102">二级菜单0102</a>
                </span>
            </li>
            <li>
                <span>
                    <a href="" title="二级菜单0103">二级菜单0103</a>
                </span>
            </li>
        </ul>
    </li>
    <li class="collapsible open">
        <span title="子节点数(2)">一级菜单02 (2)</span>
        <ul>
            <li>
                <span>
                    <a href="" title="二级菜单0201">二级菜单0201</a>
                </span>
            </li>
            <li>
                <span>
                    <a href="" title="二级菜单0202">二级菜单0202</a>
                </span>
            </li>
        </ul>
    </li>
    <li>
        <span>
            <a href="" title="一级菜单03">一级菜单03</a>
        </span>
    </li>
    <li>
        <span>
            <a href="" title="一级菜单04">一级菜单04</a>
        </span>
    </li>
</ul>

期望的页面渲染效果类似如下:

回复 [×]
提交评论
请输入评论内容

1 个回答

  • 0

    在ASP.NET Core Razor Pages的应用程序中,我们可以使用部分视图来实现递归,首先创建菜单树的实体Tree.cs

    再创建一个部分视图_TreePartial.cs

    构造测试用的树形数据:

    最后,在Index.cshtml视图文件中渲染,代码如下:

    运行得到的效果:

    本示例的完整项目目录如下:

    Rector的个人主页

    Rector

    2021-04-12 回答

    我来回答