Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core ASP.NET核心递归函数,用于显示具有多个子行的表_Asp.net Core_Razor Pages - Fatal编程技术网

Asp.net core ASP.NET核心递归函数,用于显示具有多个子行的表

Asp.net core ASP.NET核心递归函数,用于显示具有多个子行的表,asp.net-core,razor-pages,Asp.net Core,Razor Pages,我有一个表,它有ID、Name、ParentId。 因此,基本上,例如,我可以在数据库表中包含这些条目—— 我需要做的是创建一个包含嵌套行的表,并在展开时显示子项 名称1 姓名2 名字5 名字3 名字4 姓名7 名字6 但筑巢可能不止3个。所以我需要在视图中使用某种递归函数。目前我一直在使用这个代码 <tbody> @foreach (var entity in Model) { if (entity.ParentId ==

我有一个表,它有ID、Name、ParentId。 因此,基本上,例如,我可以在数据库表中包含这些条目——

我需要做的是创建一个包含嵌套行的表,并在展开时显示子项

  • 名称1
    • 姓名2
      • 名字5
    • 名字3
      • 名字4
  • 姓名7
    • 名字6
  • 但筑巢可能不止3个。所以我需要在视图中使用某种递归函数。目前我一直在使用这个代码

    <tbody>
        @foreach (var entity in Model)
        {
            if (entity.ParentId == null)
            {
                <tr>
                    <td><button class="expandButton" type="button" ></button></td>
                    <td>
                        @entity.Name
                    </td>
                    <td>
                        <a asp-action="ManipulateEntity" asp-route-id="@entity.Id">Manipulate</a>
                    </td>
                </tr>
                int child = 1;
                foreach (var childEntity in Model.Where(i => i.ParentId == entity.Id))
                {
                    <tr>
                        <td>
                            @childEntity.Name
                        </td>
                        <td>
                            <a asp-action="ManipulateEntity" asp-route-id="@childEntity.Id">Manipulate</a>
                        </td>
                    </tr>
                    child++;
                }
            }
        }
    
    
    @foreach(模型中的var实体)
    {
    if(entity.ParentId==null)
    {
    @实体名称
    操纵
    int child=1;
    foreach(模型中的var childEntity.Where(i=>i.ParentId==entity.Id))
    {
    @childEntity.Name
    操纵
    儿童++;
    }
    }
    }
    
    但不幸的是,这只显示了第一个家长和他的孩子的结果,当有孩子的孩子时,它会突然出现,只显示第一个家长和他的孩子。正如你们所看到的,我正在遍历基本上是列表的模型


    如何在视图侧执行此操作?我已经提供了理解我当前逻辑的最低限度的代码,正如我所说的,它只显示了第一位家长和他的孩子,但我自己无法弄清楚我应该做些什么来实现这一点。

    您需要只使用razor pages而不使用第三方来实现它吗?没有第三方。好吧,我会考虑到这一点,因为我有所有需要的信息。我在Db表中有每个输入的父ID,所以我想我需要一种方法,通过视图中的某种递归函数来实现它。可能有人也有同样的问题,可以分享解决方案。你试过jstree吗?没有,但我看不出它对我有什么帮助。另外,jstree是一个jquery插件,我当然不能使用它。据我所知,jstree帮助您使用正确的标记创建树,这在本问题中不是问题。在这里,您不知道节点中有多少个和哪些节点有子节点,以及它们的子节点是否有自己的子节点。。所以您需要执行递归函数,以使其正确。我最不关心的是标记问题,因为它们都是行,可能只会将#number添加到parent,将.1添加到child,将.1.1添加到child的child。。。所以我真的不认为jstree有什么帮助