Umbraco Razor让孩子的孩子

时间:2017-09-01 09:44:35

标签: razor umbraco7

我正在尝试使用我不熟悉的razor构建带子菜单的菜单,到目前为止,我可以获得顶级元素:

@{ 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> }

这也不起作用。

任何人都可以告诉我我做错了什么吗?我认为它可能以某种方式,但谷歌搜索问题还没有抛出任何东西。

1 个答案:

答案 0 :(得分:1)

这必须是分析器错误。你已经宣布&#34; @&#34;在你的foreach循环开始时,你不需要它在你的#34; if&#34;言。

改变这个:

@if (item.Children.Where("Visible").Any()) { <li><p>has children</p></li> }

到此:

if (item.Children.Where("Visible").Any()) { <li><p>has children</p></li> }