我有一系列商品,想用Razor打印出来。对于每12个元素,它应该创建一个新的div。但是,打开和关闭标签似乎会导致很多问题。这是我的代码。
<div class='grid_7'>
@foreach (var property in properties)
{
@if (counter % 12 == 0)
{
</div>
<div class='grid_7'>
}
@if (property.ShowInEditor)
{
<span> one property! @(property.Name) </span>
}
counter++
}
但是,它告诉我第一个if
和第一个foreach
错过了结束{
。我认为这是因为未封闭的标签,但正如您所看到的,我无法在那里关闭标签。
我该怎么做?
编辑:在@
之前移除if
导致更多问题,使Razor相信它是文本而不是代码。
答案 0 :(得分:2)
尝试在收到此错误的行之前添加“@:”,不加引号,并在if语句之前删除@
。
<div class='grid_7'>
@foreach (var property in properties)
{
if (counter % 12 == 0)
{
@:</div>
@:<div class='grid_7'>
}
if (property.ShowInEditor)
{
@:<span> one property! @property.Name </span>
}
counter++;
}
答案 1 :(得分:1)
您需要稍微修改一下条件,以便在开始时计数器为零,否则您将在第一次交互时得到一个空div:
<div class='grid_7'>
@{
var counter = 0;
foreach (var property in properties)
{
if (counter > 0 && counter % 12 == 0)
{
@Html.Raw("</div><div class='grid_7'>")
}
if (property.ShowInEditor)
{
<span> one property! @(property.Name) </span>
}
counter++;
}
</div>
答案 2 :(得分:0)
<div class='grid_7'>
@foreach (var property in properties)
{
if (count%7==0)
{
@Html.Raw("</div>");
@Html.Raw("<div class='grid_7'>");
}
else
{
//do something
}