我正在尝试使用剃须刀使用子菜单构建菜单,而我却不熟悉,到目前为止,我可以使用:
获得最高级别的元素@{ var selection = CurrentPage.Site().Children.Where("Visible"); }
,然后:
@foreach (var item in selection)
{
<li class="@(item.IsAncestorOrSelf(CurrentPage) ? "current" : null)">
<a href="@item.Url">@item.Name</a>
</li>
}
但是,如果我尝试测试下一个级别是否存在:
@foreach (var item in selection)
{
<li class="@(item.IsAncestorOrSelf(CurrentPage) ? "current" : null)">
<a href="@item.Url">@item.Name</a>
</li>
@if (item.Children.Where("Visible").Any()) { <li><p>has children</p></li> }
}
我有一个错误。
@if (item.Descendants().Where("Visible").Any()) { <li><p>has children</p></li> }
这也不起作用。
任何人都可以启发我对我做错了什么吗?我认为这是可能的,但是谷歌搜索问题还没有抛出任何东西。
这必须是解析器错误。您已经在foreach循环的开头声明了"@",因此您在" if"语句之前都不需要它。
更改此内容:
@if (item.Children.Where("Visible").Any()) { <li><p>has children</p></li> }
:
if (item.Children.Where("Visible").Any()) { <li><p>has children</p></li> }