【问题标题】:ASP.NET MVC how to populate a collection to a 4 column table?ASP.NET MVC 如何将集合填充到 4 列表?
【发布时间】:2015-12-24 15:07:14
【问题描述】:

我有一个从 MVC 控制器传递到视图的集合。在我看来,我想在一个 4 列的表中列出图像及其描述。我没有使用网格。

所以,如果我收集 8 个,我将在表格的 2 行中获得一个包含 4 个项目的画廊列表。

如果我得到 16,我将在表格的 4 行中得到 4 列。

在我的代码中,我首先将所有产品项添加到一行中。我需要在每组 4 个项目之后添加一个新行。

我该怎么做?

有没有更好的控件可以使用?

<table class="table-responsive">
            <tbody>
                <tr>
                    @foreach (var product in Model)
                    {

                        <td>

                            <img src=@product.Thumbnail style="width: 100px; height: 100px" />
                            <div class="col-md-6 col-xs-6 small">

                                @product.Title<br>
                                @product.Description<br>
                                @product.Audience<br>
                                @product.Company<br>
                                <label>Published : </label> @product.PubDate<br>
                                <label>Download : JPEG | PDF</label>
                            </div>
                        </td>
                    }
                </tr>
            </tbody>
        </table>

【问题讨论】:

  • 我就是这样做的。我相信是否使用 或
    会有争论,但在这种情况下,我认为
    也是合适的。

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


【解决方案1】:

我认为最优雅的方法是使用 linq 将所有产品按 4 分组,然后生成表格:

每组 1 行,每个产品 1 列:

<table class="table-responsive">
    <tbody>
        @foreach (var productGroup in Model.Select((e, i) => new { Product = e, Grouping = (i / 4) }).GroupBy(e => e.Grouping))
        {
            <tr>
                @foreach (var product in productGroup.Select(x => x.Product))
                {
                    <td>
                        <img src=@product.Thumbnail style="width: 100px; height: 100px" />
                        <div class="col-md-6 col-xs-6 small">
                            @product.Title<br>
                            @product.Description<br>
                            @product.Audience<br>
                            @product.Company<br>
                            <label>Published : </label> @product.PubDate<br>
                            <label>Download : JPEG | PDF</label>
                        </div>
                    </td>
                }
            </tr>
        }
    </tbody>
</table>

注意Grouping = (i / 4) 行。您可以在此处更改连续拥有的产品数量。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签