首页 > 解决方案 > 在 Foreach 循环中以单次重复以及 MVC 5 的形式在表中显示数据

问题描述

我想以以下格式显示表格:
看图

我通过以下查询获取数据:

var rate_list = (from r in db.rate_list
    where r.rate_list_type_id == get_type_id.rate_list_type_id
    group r by r.item.item_category_id
    into gr
    select new RateList()
    {
        category_name = gr.FirstOrDefault().item.item_category.category_name,
        item_name = gr.Select(r => new ItemName()
        {
            item_name = gr.FirstOrDefault().item.item_name

        }).ToList()
    }).ToList();

然后在视图中我正在做类似的事情:

@foreach (var item in Model.complete)
    {
        <tr style="border: 1px solid black;">
        <td rowspan="@Model.complete.Count()"></td>
        <td colspan="3">@item.category_name</td>

        @foreach(var t in item.item_name)
        {
            <td>@t.item_name</td>
            <td>@t.item_unit</td>
            <td>@t.item_price</td>
        }
        </tr>               
    } 

我不确定如何输出与图像中所示相同的结果。
任何帮助,将不胜感激。

编辑
我目前得到这个

输出

编辑
这是我的 ViewModel

public class RateList
    {
        public string category_name { get; set; }        
        public IEnumerable<ItemName> item_name { get; set; }
    }

    public class ItemName
    {
        public string item_name { get; set; }
    }

编辑

现在我有这个输出

编辑 2
最新输出

编辑 3
最新输出

标签: c#asp.net-mvchtml-tableasp.net-mvc-5

解决方案


尝试这个

<table>
        <thead>
            <tr>
                <th>SER</th>
                <th colspan="2">Items</th>
                <th>AU</th>
                <th>1 X Block</th>
                <th>Price</th>
            </tr>
        </thead>
        <tbody>        
            @{ 
                int i=0;
                foreach (var item in Model.complete) {

                    <tr>
                        <td rowspan="@(item.item_name.Count+1)"></td>
                        <td colspan="2">@item.category_name</td>
                        <td> </td>
                        <td> </td>
                        <td> </td>
                    </tr>
                     int alp=65;
                    foreach (var t in item.item_name) {                           
                        <tr>
                            <td>@((char)(alp++))</td>
                            <td>@t.item_name</td>
                            <td>@t.item_unit</td>
                            <td>@t.item_price</td>
                        </tr>
                    }
                    i++;
                }
            }
        </tbody>
</table>

推荐阅读