我试图迭代一系列图像并让它在连续三个图像之后进入下一行。我在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 -->
答案 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>