c#mvc razor view foreach创建动态表列

时间:2017-07-08 23:16:59

标签: c# asp.net-mvc asp.net-core-mvc

我有一个包含4个属性的模型,每个属性都是List<T>

现在我想构建一个表格,4个属性中的每一个的数据都会显示在它自己的列中。这些属性可以包含不同数量的项目。

enter image description here

如何遍历模型的属性并在自己的列中显示它们的项目?

public class ViewModel
{
   public class List<Custom1> Prop1 {get; set;}
   public class List<Custom2> Prop2 {get; set;}
   public class List<Custom3> Prop3 {get; set;}
   public class List<Custom4> Prop4 {get; set;}
}

Custom1, Custom2, Custom3, Custom4 are all POCO clases and have one common property called Name.

1 个答案:

答案 0 :(得分:3)

查找属性中的最大长度(M)。然后使用for循环迭代M次。使用索引器model.Prop1[i]进行访问。您需要检查以确保您不会超出范围,因为每个集合的大小都不同。

@{
    int rowCount = GetMax(model.Prop1, model.Prop2, model.Prop3);
    int p1Size = model.Prop1.Count();
    int p2Size = model.Prop2.Count();
    int p3Size = model.Prop3.Count();
}

@for (int i = 0; i < rowCount; i++)
{
    var c1 = (i < p1Size) ? model.Prop1[i] : "";
    var c2 = (i < p2Size) ? model.Prop2[i] : "";
    var c3 = (i < p3Size) ? model.Prop3[i] : "";

    <tr><td>@c1</td><td>@c2</td><td>@c3</td></tr>
}