【问题标题】:Get children's children count in Umbraco在 Umbraco 中获取儿童的儿童数量
【发布时间】:2015-06-26 22:48:04
【问题描述】:

如何计算子节点的子节点?到目前为止我有这个代码:

@foreach (var newsYear in CurrentPage.Children.Where("Visible"))
{
    @newsYear.Name (@newsYear.Children.Count()) @*Number of children's children*@
    @foreach (var newsMonth in newsYear.Children.Where("Visible"))
    {
        @newsMonth.Name (@newsMonth.Children.Count())
    }
}

【问题讨论】:

  • 那么什么不起作用?你试过newsYear.ChildrenAsList.Count() 吗?
  • 不,这段代码是以这种方式工作的,但我现在需要在第一次 foreach 之后对孩子的孩子进行编号。所以类似@newsYear.Children.Children.Count(),但这不起作用。
  • 您是否要在第二行显示 HTML?您的代码是正确的,您必须将其包装在一些 html 标记中或使用 @Html.Raw() 在屏幕上显示它。

标签: razor umbraco umbraco7


【解决方案1】:

通过查看您的代码,您似乎正在尝试显示当年所有新闻文章的总数?

 @newsYear.Name (@newsYear.Children.Count())

但是,假设您遵循以下结构,这将返回所有“月”节点的计数:

年>月或年>月>日

如果您想要当前月份的文章总数(循环中),请尝试以下操作:

@newsYear.Children.Where(x => x.DocumentTypeAlias.Equals("YourNewsDocTypeAliasHere")).Count();

【讨论】:

    【解决方案2】:

    使用SelectMany() 来执行此操作。

    var allItems = CurrentPage.Children.Where("Visible").ToList();
    foreach (var newsYear in allItems)
    {
        var yearTotal = allItems.SelectMany(c => c.Children).Count();
        foreach (var newsMonth in newsYear.Children)
        {
            var monthTotal = newsMonth.Children.Count();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多