我的导航/节点结构如下:
首页
--关于我们
--我们的服务
-----金融
-----保险
我当前的代码循环遍历节点并将它们列在 .当“CurrentPage”有子项时,菜单包含子项。
此循环的问题在于,当这些子项(金融或保险)之一是“CurrentPage”时,“我们的服务”节点上的“if”条件将失败,因为 CurrentPage 不再有子项,因此“金融”和“保险”现在不再保留在菜单中。
我想添加“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>
最佳答案
第一个 foreach 应该来自您的主页。 (你的家在1层吗?)
无需执行 if(has Children) 检查,因为如果没有任何子级,则不会循环。
您只想要 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>
关于razor - Umbraco 和 Razor : If CurrentPage/Model is a Child, 状况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26737695/