Umbraco - 仅获取文档类型的子元素

时间:2016-06-15 15:32:13

标签: umbraco traversal children

我在

下面有一个结构链接

PageOne

  • - ColumnItem-One

    - ColumnItems-Two

    - ColumnItems-Three

    - ColumnItems-Four

PageTwo

  • - ColumnItems-OneB

    - ColumnItems-TwoB

我有一个局部视图,我想显示每个子列项,但目前我正在使用后代,它返回所有6个项目而不是PageOne上的4个和PageTwo上的2个项目。

我的代码是

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    var root = Model.Content;
    var tiles = root.Descendants("tiles");



    if(tiles.Count() > 0)
    {
        <div class="row tile-row">
            @foreach(var node in tiles)
            {
                <div class="col-md-3">
                    <div class="tile">
                        <h3>@(node.GetPropertyValue("tileTitle"))</h3>
                        @(node.GetPropertyValue("tileBodyText"))<br/>
                        <a class="btn btn-more" href="@(node.GetPropertyValue("tileButtonLink"))">@(node.GetPropertyValue("tileButtonText"))</a>
                    </div>  
                </div>
            }
        </div><!--/.row-->
    }
}

如果我将后代更改为Children(),我会收到一个错误页面。

Thansk

1 个答案:

答案 0 :(得分:3)

如果您从PageOnePageTwo调用部分视图,则在使用强类型对象时可以执行以下操作:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    // Get this PageOne or PageTwo object
    var page = Model.Content;

    // Get the column node that is descendant of this page
    var column = root.Descendants("columnAlias");

    // Get all children of the column node that are published
    var childs = column.Children.Where(x => x.IsVisible());

    if(childs.Count() > 0)
    {
        <div class="row tile-row">
            @foreach(var node in childs)
            {
                <div class="col-md-3">
                    <div class="tile">
                        <h3>@(node.GetPropertyValue("tileTitle"))</h3>
                        @(node.GetPropertyValue("tileBodyText"))<br/>
                        <a class="btn btn-more" href="@(node.GetPropertyValue("tileButtonLink"))">@(node.GetPropertyValue("tileButtonText"))</a>
                    </div>  
                </div>
            }
        </div><!--/.row-->
    }
}