首页 > 解决方案 > 如何foreach迭代包含集合列表的剃须刀项目?

问题描述

如何在剃刀中迭代这个结果列表项?

我的控制器:

ViewBag.DataGrid = lst. GroupBy(x=> new { x.PosisiJabatanId, x.AplikasiId}, (key, group) => new 
                                         {
                                             Key1 = key.PosisiJabatanId,
                                             Key2 = key.AplikasiId,
                                             Result = group.ToList() 
                                         });

我的剃刀视图:

@foreach (var item in @ViewBag.DataGrid)
            {
                @:<tr>
                    <td>@i</td>
                    <td>@item.Result.Organisasi</td>
                    <td>@item.Result.NamaAplikasi</td>
                    <td>@item.Result.Unit</td>
                    <td>@item.Result.PosisiJabatanId</td>

                i = i + 1;
                @:</tr>
            }

“对象”不包含“结果”的定义

标签: c#asp.net-mvcrazorforeach

解决方案


您正面临这个问题,因为您正试图在匿名对象上使用每个循环。所以首先你需要像下面这样从中获得价值。然后你需要为它上面的每个循环进行 eterate。

 @foreach (var item in @ViewBag.DataGrid)
    {
        <tr>
            @{
                var val = item.GetType()
                .GetProperty("Result")
                .GetValue(item);

                foreach (var result in val)
                {
                    <td>@result.Organisasi</td>
                    <td>@result.NamaAplikasi</td>
                    <td>@result.Unit</td>
                    <td>@result.PosisiJabatanId</td>
                }
            }
        </tr>
    }


推荐阅读