在每个循环中指定两个 models/arrays?

specifying two models/arrays in a for each loop?

我知道 for each 循环通常关注一个数组,但是我是 Umbraco 的新手,我想知道这是否可能?

我的代码如下:

<div>
    <div class="row">
        @foreach (var feature in homePage.CSSHomepages.Where("featuredPage"))
        {
            <div class="3u">
                <!-- Feature -->
                <section class="is-feature">
                    <a href="@feature.Url" class="image image-full"><img src="@feature.Image" alt="" /></a>
                    <h3><a href="@feature.Url">@feature.Name</a></h3>
                    @Umbraco.Truncate(feature.BodyText, 100)
                </section>
                <!-- /Feature -->
            </div>
        }
    </div>
</div>

目前显示一个特色页面,但我也试图显示 "HTMLHomepages" 中的一个特色页面。

我已经尝试了以下代码无济于事:

<div>
    <div class="row">
        @foreach (var feature in homePage.CSSHomepages.Where("featuredPage") & homePage.HTMLHomepages.Where("featuredPage"))
        {
            <div class="3u">
                <!-- Feature -->
                <section class="is-feature">
                    <a href="@feature.Url" class="image image-full"><img src="@feature.Image" alt="" /></a>
                    <h3><a href="@feature.Url">@feature.Name</a></h3>
                    @Umbraco.Truncate(feature.BodyText, 100)
                </section>
                <!-- /Feature -->
            </div>
        }
    </div>
</div>

但如我所料,我遇到了运行时错误。有什么建议吗?

您收到的运行时错误与umbraco 无关。 你有一个 &- 符号。这在剃刀语言中不存在。 你至少应该使用 && 这意味着 AND。 但是在这种情况下,您不想使用 and 运算符,而是使用 OR 运算符:||。如果您在 if 语句中检查某些内容,这一切都是正确的。

这里你正在遍历一个数组。这意味着您需要在遍历它们之前连接两个数组。通常你从 Umbraco API 得到两个 IEnumerable。要将两个 IEnumerables 连接在一起,您可以使用 Concat (see MSDN) 函数。

我会做什么:

@{
   var featureList = homePage.CSSHomepages.Where("featuredPage").Concat(homePage.HTMLHomepages.Where("featuredPage"))
}

<div class="row">
  @foreach( var feature in featureList) {
     // your existing code
  }
</div>