Razor C#foreach循环通过图像阵列

时间:2016-04-13 23:58:06

标签: c# razor

我试图迭代一系列图像并让它在连续三个图像之后进入下一行。我在Razor的语法错误中告诉我,我不需要" @" if语句中的字符。然而,当我删除它时,它告诉我,我错过了一个结束括号。我在任何地方都看不到丢失的支架。这是我的代码。

<!-- MATRIX -->
<div>
<table class="table table-responsive">
    <tr>

    @{
        int c = 0;
    }

    @foreach (var x in portifolioImages)
    {
        c++;
        <td><img src="@x.UmbracoFile" alt="@x.imageTitle" style="margin:0     auto;" /></td>
        @if (c == 3)
        {
            </tr><tr>
        }
    }

</tr>
</table>
</div>
<!-- END MATRIX -->

1 个答案:

答案 0 :(得分:2)

这一行

@if (c == 3)
{
 </tr><tr >
}

</tr><tr >不是C#代码。因此,您需要告诉剃刀将其视为HTML。你可以通过添加@:前缀来做到这一点。如果您已经在代码块(在foreach 中),那么前面不需要@

if (c == 3)
{
  @:</tr><tr >
}

但是当你的项目数为3时,这段代码仍然会产生一个打开的tr标签。所以你应该将那部分(打开tr)移动到另一个条件。这段代码应该可以正常工作。

<table>
    @{ var counter = 1; }

    @foreach (var item in Model.Events)
    {
        if (counter==1)
        {
            @:<tr>
        }
        <td>Your content</td>
        if (counter % 3 == 0)
        {
          @:</tr>
          counter = 1;
        }
        counter++;
   }     
</table>