混合的html和代码在foreach剃须刀

时间:2013-08-11 14:07:17

标签: c# loops asp.net-mvc-4 razor

我想用row-fluid类创建bootstrap网格。需要将所有嵌套div与span4类分隔成块。所以我希望有这样的HTML:

    <div class="row-fluid">
        <div class="span4"></div>
        <div class="span4"></div>
        <div class="span4"></div>
    </div>
    <div class="row-fluid">
        <div class="span4"></div>
        <div class="span4"></div>
        <div class="span4"></div>
    </div>

我在razor中有代码

@{
int counter = 3;
}
@foreach (var config in Model)
{
    @if (counter == 3)
    {
       <div class="row-fluid">
       @counter = 0;
    }
    @Html.Partial("_ConfigBar", config)

    @if (counter == 2)
    {
        </div>
    }
    @{counter++;}
}

部分视图只是将div放在span4类中,并没有什么有趣的。

但它没有用。谁能指出我有什么问题?

1 个答案:

答案 0 :(得分:27)

这样的事情应该创造你所需要的东西:

@{
    int counter = 0;
    foreach (var config in Model)
    {
        if (counter == 0)
        {
           @Html.Raw("<div class=\"row-fluid\">")
        }
        else if (counter > 0 && counter % 3 == 0 )
        {
           @Html.Raw("</div><div class=\"row-fluid\">")
        }

        @Html.Partial("_ConfigBar", config)

        counter++;
    }

    @Html.Raw("</div>")
}

这将:

  • 在第一个循环中创建一个开场div
  • 关闭当前打开的div并在每个第4个循环上打开一个新的div
  • 在循环完成后添加结束div。