【问题标题】:Logic inside table. for each loop for formatting表内的逻辑。用于格式化的每个循环
【发布时间】:2011-08-15 16:09:21
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以将它们分组:

    @{
        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>
    

    显然,您需要这样做意味着您的视图模型不适合此视图。所以适应它并在你的控制器动作中执行这个分组。这样你的视图就会变得简单易读,不像意大利面条式的代码。

    【讨论】:

    • 非常优雅的解决方案。超级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多