表内的逻辑。为每个循环格式化

时间:2011-08-15 16:09:22

标签: html asp.net-mvc asp.net-mvc-3 razor html-table

有没有办法可以将tds限制为4或以下设置中的任何数字..请参阅下面的代码。现在,它在一行中显示所有模型项(因为它应该根据代码)。如果项目是十几个,它们都显示一行..我想在每一行显示这四个而不是一行中的所有... ...(我在谈论桌子内的表吗?)这可以吗可以吗?

<table>
  <tr>
       @foreach (var item in Model)
       {
            <td>     
                 @Html.DisplayFor(modelItem => item.fld1)
                 @Html.DisplayFor(modelItem => item.fld2)                       
            </td>      
       }
  </tr>
</table>

1 个答案:

答案 0 :(得分:3)

你可以将它们分组:

@{
    var chunkSize = 4;
    var groupedResult =
        from i in Model.Select((value, index) => new { Value = value, Index = index })
        group i.Value by i.Index / chunkSize into g
        select g;
}

<table>
    @foreach (var result in groupedResult)
    {
        <tr>
            @foreach (var item in result)
            {
                <td>
                    @Html.DisplayFor(modelItem => item.fld1)
                    @Html.DisplayFor(modelItem => item.fld2)  
                </td>
            }
        </tr>
    }
</table>

显然,您需要执行此操作意味着您的视图模型不适合此视图。因此,调整它并在控制器操作中执行此分组。然后你的视图将变得简单易读,并且不像一些意大利面条代码。