在C#剃须刀代码中每4或5列创建一个新行

时间:2019-03-26 05:17:31

标签: c# razor

我在php中看到了一种方法,但是我使用的是剃刀代码。我需要每4个循环插入一个封闭行和一个开放行标签。但是我使用的主循环是一个foreach,实际上并没有给我一个很好的变量来使用mod。这就是我所拥有的。能给我个快速解决方案吗?我敢肯定这很简单。 这就是我所拥有的:

  <tbody>
        <tr align="center">
            @foreach (var item in Model)
            { @for (int loops = 1; loops < 6; loops++)
                {   
                <td>
                    <img src="@Html.DisplayFor(modelItem => item.PicUrl)" height="100" /><br />
                    <b>@Html.DisplayFor(modelItem => item.Name)</b><br />
                    @Html.DisplayFor(modelItem => item.Description)<br />
                    <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
                    <a asp-action="Details" asp-route-id="@item.Id">Details</a> |
                    <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
                </td>
                }

            }
        </tr>
    </tbody>

不幸的是,正如您可能想像的那样,此代码只是将5张同一张照片放在5张下一张照片之前,并且全部放在一行中。

1 个答案:

答案 0 :(得分:1)

已更新为计数器和mod

@{int counter = 0;}
<tbody>
    <tr align="center">
        @foreach (var item in Model)
        {
            <td>
                <img src="@Html.DisplayFor(modelItem => item.PicUrl)" height="100" /><br />
                <b>@Html.DisplayFor(modelItem => item.Name)</b><br />
                @Html.DisplayFor(modelItem => item.Description)<br />
                <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
                <a asp-action="Details" asp-route-id="@item.Id">Details</a> |
                <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
            </td>
            counter++;
            if (counter % 5 == 0)
            {
                @:</tr><tr>
            }
        }
    </tr>
</tbody>

我认为counter % 5逻辑需要引起注意,以确保其按预期工作。