0

我有一些物品,想用 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缺少关闭{。我认为这是因为未关闭的标签,但是,如您所见,我无法在那里关闭标签。

我怎样才能做到这一点?

编辑:在导致 Razor 相信它是文本而不是代码@之前消除if更多问题。

4

3 回答 3

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++;
}
于 2013-07-26T11:04:41.370 回答
2

您需要稍微修改您的条件以考虑到计数器在开始时为零,否则您将在第一次交互时得到一个空 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>
于 2013-07-26T11:19:09.863 回答
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 
        }
于 2013-07-26T11:10:37.763 回答