Umbraco 7 Razor - 找到父母

Tra*_*vis 2 c# asp.net-mvc umbraco razor umbraco7

我正在使用Umbraco 7,我想要一个局部视图来渲染左侧导航,从树的某个点开始,它找到一个具有特定属性集的页面.

我试过这个,但它只能从树中固定的深度1层开始工作.我希望从站点内的任何深度执行此操作,并将其重新递归,直到找到项目并将其作为左侧导航的根.

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@{
    @* Get the item above this one that has a property of resetLeftNav ticked *@
    var root = CurrentPage.AncestorOrSelf(1).Children.Where("resetLeftNav").First(); 
}

<ul class="nav left-nav">
    @foreach(var page in root.Children)
    {
        <li class="">
            <a href="@page.Url">@page.Name</a>
        </li>
    }
</ul>
Run Code Online (Sandbox Code Playgroud)

Dig*_*ift 7

你可以使用:

var root = Model.Content.AncestorsOrSelf().First(
                 x => x.GetPropertyValue<bool>("resetLeftNav")
              );
Run Code Online (Sandbox Code Playgroud)

唯一的区别是你正在寻找一个单一的祖先.我找到了所有这些,这使我可以做检查,然后采取第一个.