我的导航/节点结构如下:
主页
- 关于我们
- 我们的服务
-----财务
-----保险
我当前的代码循环遍历节点并将它们列在一个节点中。当'CurrentPage'有孩子时,菜单包括孩子。
这个循环的问题是当其中一个孩子(财务或保险)是'CurrentPage'时,'Our Services'节点上的'if'条件失败,因为CurrentPage不再有子节点,因此'Finance' “保险”现在更长时间保留在菜单中。
我想加我'if','||'基本上会说'或CurrentPage是子节点'的子句
以下代码 感谢
<ul>
@foreach (var page in @CurrentPage.AncestorOrSelf(1).Children)
{
<li class="menuItems @(page.IsAncestorOrSelf(CurrentPage) ? "selected" : null)">
<a href="@page.Url">@page.Name test</a>
</li>
if (@CurrentPage.Children.Count() > 0)
{
foreach (var childPage in page.Children)
{
<li class="menuItems menuChildItems @(childPage.IsAncestorOrSelf(CurrentPage) ? "selected" : null)">
<a href="@childPage.Url">@childPage.Name</a>
</li>
}
}
}
</ul>
答案 0 :(得分:2)
第一个foreach应该来自你的家。 (你家的等级是1级吗?)
没有必要进行if(有孩子)检查,因为如果没有孩子,它就不会循环。
您只想要2级菜单吗?如果是这样,那就这样做:
<ul>
@foreach (var page in CurrentPage.AncestorOrSelf(1).Children)
{
<li class="menuItems @(page.Id == CurrentPage.Id ? "selected" : "")">
<a href="@page.Url">@page.Name test</a>
</li>
@if(CurrentPage.Id == page.Id || CurrentPage.Parent.Id == page.Id)
{
foreach (var childPage in page.Children)
{
<li class="menuItems menuChildItems @(childPage.Id == CurrentPage.Id ? "selected" : "")">
<a href="@childPage.Url">@childPage.Name</a>
</li>
}
}
}
</ul>