如何使用Razor语法将列表显示为多个表?

时间:2011-11-01 11:15:24

标签: asp.net-mvc-3 razor

我有一个包含许多行的模型。该行中的一列显示数据存储位置。我想要做的是为每个数据存储位置提供一个数据表。是否有一些简单的方法可以用Razor做到这一点?这是我所拥有的简化示例。

<table>
@foreach (var item in Model) {    
    <tr>
        <td>@item.Datastore</td>
        <td>@item.xxx</td>
        <td>@item.yyy</td>
    </tr>
}
</table>

1 个答案:

答案 0 :(得分:0)

如果您没有在模型中获得可用的单个数据源列表,则必须直接从模型中提取它们。您可以使用Linq并使用Distinct方法查找唯一值。

一旦有了这些,您就可以遍历列表并为每个数据存储创建单独的表,并根据数据存储值使用模型中的过滤值填充它们。

这样的事情应该有效:

@{
    var dataStores = Model.Select(i => i.DataStore).Distict();
    foreach(var dataStore in dataStores) {
    <table>
    @foreach (var item in Model.Where(i => i.DataStore == dataStore)) {
       <tr>
           <td>@item.Datastore</td>
           <td>@item.xxx</td>
           <td>@item.yyy</td>
       </tr>
    }
    </table>
   }
}