我想知道如何创建一个递归界面,我有一套菜单,这些菜单是有孩子的父母等等,因为没有最大数量的孩子想找到这个的解决方案问题,我离开了我在 ASP.NET MVC 代码和 C#
中所做的工作
@foreach (var opcaoPai in opcoesPai)
{
var filhos = opcaoPai.OpcaoMenuFilhosSet.OrderBy(o => o.OrdemMenu);
<div class="list-group-item list-group-item-info" data-parent="#@opcaoPai.IdOpcao">
<span>
@if (filhos.Any())
{
<a href="#@opcaoPai.IdOpcao" data-toggle="collapse">
<i style="float:left;margin-right:3px;" class="fa fa-caret-down"></i>
@Html.DisplayFor(modelItem => opcaoPai.Titulo)
</a>
}
else
{
@Html.DisplayFor(modelItem => opcaoPai.Titulo)
}
</span>
<!--<td>
@Html.DisplayFor(modelItem => opcaoPai.OrdemMenu)
</td>
<td>
@if (opcaoPai.IdAccao != null)
{
@(opcaoPai.AccaoSet.ControladorSet.PluginSet.Designacao + " - " + opcaoPai.AccaoSet.ControladorSet.Designacao + " - " + opcaoPai.AccaoSet.Designacao)
}
</td>
<td>
@Html.DisplayFor(modelItem => opcaoPai.OpcaoMenuPaiSet.Titulo)
</td>
<td>
@Html.DisplayFor(modelItem => opcaoPai.ConteudoSet.Titulo)
</td>-->
<a href="@Url.Action("Apagar" ,new {id=opcaoPai.IdOpcao})" style="float:right;margin-right:10px;" id="menusgestao" type="btn" class="btn btn-danger btn-xs btnmenus">
<i id="iconsmenugestao" class="fa fa-lock" aria-hidden="true"></i>Eliminar
</a>
<a href="@Url.Action("Detalhes", new {id=opcaoPai.IdOpcao})" style="float:right;margin-right:10px;" id="menusgestao" type="btn" class="btn btn-info btn-xs btnmenus">
<i id="iconsmenugestao" class="fa fa-info-circle" aria-hidden="true"></i>Detalhes
</a>
<a href="@Url.Action("Editar", new {id=opcaoPai.IdOpcao})" style="float:right;margin-right:10px;" id="menusgestao" type="btn" class="btn btn-warning btn-xs btnmenus">
<i id="iconsmenugestao" class="fa fa-pencil" aria-hidden="true"></i>Editar
</a>
</div>
<div id="@opcaoPai.IdOpcao" class="collapse list-group-submenu">
@foreach (var filho in filhos)
{
<div class="list-group-item list-group-item-warning" data-toggle="collapse" data-parent="#@opcaoPai.IdOpcao-@filho.IdOpcao">
<span>
@Html.DisplayFor(modelItem => filho.Titulo)
</span>
<!--<td>
@Html.DisplayFor(modelItem => filho.OrdemMenu)
</td>
<td>
@if (filho.IdAccao != null)
{
@(filho.AccaoSet.ControladorSet.PluginSet.Designacao + " - " + filho.AccaoSet.ControladorSet.Designacao + " - " + filho.AccaoSet.Designacao)
}
</td>
<td>
@Html.DisplayFor(modelItem => filho.OpcaoMenuPaiSet.Titulo)
</td>
<td>
@Html.DisplayFor(modelItem => filho.ConteudoSet.Titulo)
</td>-->
<a href="@Url.Action("Apagar" ,new {id=filho.IdOpcao})" style="float:right;margin-right:10px;" id="menusgestao" type="btn" class="btn btn-danger btn-xs btnmenus">
<i id="iconsmenugestao" class="fa fa-lock" aria-hidden="true"></i>Eliminar
</a>
<a href="@Url.Action("Detalhes", new {id=filho.IdOpcao})" style="float:right;margin-right:10px;" id="menusgestao" type="btn" class="btn btn-info btn-xs btnmenus">
<i id="iconsmenugestao" class="fa fa-info-circle" aria-hidden="true"></i>Detalhes
</a>
<a href="@Url.Action("Editar", new {id=filho.IdOpcao})" style="float:right;margin-right:10px;" id="menusgestao" type="btn" class="btn btn-warning btn-xs btnmenus">
<i id="iconsmenugestao" class="fa fa-pencil" aria-hidden="true"></i>Editar
</a>
</div>
}
</div>
}
答案 0 :(得分:0)
假设您有这种结构:
public class Node {
List<Node> Filhos {get;set;}
}
要递归渲染,您只需要创建一个接收Node作为参数的html渲染助手:
@helper RenderSomething(Node node) {
// html to display node information
foreach(Node filho in node.Filhos) {
RenderSomething(filho);
}
}