我具有以下菜单结构
A
-B
-C
D
-E
--F
以此类推。 A
有孩子B, C
,D
有孩子E
,而E
有孩子F
我创建了一种递归呈现菜单的方法。 但是由于某种原因(我不知道),它变得非常慢
A, D = parent nodes, with parent = null
这是我的程序
1.
获取所有父节点的值为parent = null,在这种情况下为A和D。
2.
对于每个人,检查他们是否有孩子。
2.1
如果他们有孩子,请让孩子在1
上进行遍历
2.2
如果他们没有孩子,只需打印它们,然后转到下一项。
我可以对此应用某种形式的记忆吗?
这是C#代码
allMenus
是所有可能的菜单。
@helper renderTree(IEnumerable<Menu> menus, IEnumerable<Menu> allMenus)
{
foreach (var item in menus)
{
var result = item.MenuName;
//if has childs
if (allMenus.Where(m => m.ParentID == item.MenuID).Any())
{
<li class="treeview">
<a href="#">
<i class="@item.IconName"></i>
<span>
@{
@Html.Raw(result);
}
</span>
<i class="fa fa-angle-left pull-right"></i>
<ul class="treeview-menu">
@{
// get the childs
var childs = allMenus.Where(m => m.ParentID == item.MenuID);
@renderTree(childs, allMenus);
}
</ul>
</a>
</li>
}
else
{
<li>
<a href="@Url.Action(@item.ActionName, @item.ControllerName, new { area = @item.AreaName }, null)">
<i class="@item.IconName"></i>
<span>@Html.Raw(result)</span>
</a>
</li>
}
}
}