Mat*_*ull 3 c# asp.net-mvc razor asp.net-mvc-4
我有一个传递给视图的对象的通用列表.目前,每个列表项都逐行显示给用户:
@foreach (var result in Model.SearchResults)
{
result.Address.TownCity
// ...
}
Run Code Online (Sandbox Code Playgroud)
因此每个列表项都显示在自己的行中.在美学上,这看起来并不是最好的,因为剩下相当多的空白区域.
我想做的是这样的:
第1行| 列表项1 | 清单项目2
第2行| 清单项目3 | 清单项目4
等等.....
这是我必须做的事情服务器端,即将我的列表的一半放入另一个列表,并在视图中有两个foreach循环 - 每一个填充一列,逐行?或者无论如何这可以在使用剃须刀的视图中完成?
您可以执行此操作将每组行分组为"批处理",然后循环遍历批处理中的每个项目.
@{
var batches = Model.SearchResult
.Select((x, i) => new { x, i })
.GroupBy(p => (p.i / 2), p => p.x);
}
@foreach(var row in batches)
{
<span>Row @row.Key</span>
@foreach(var item in row)
{
<span>| @item.Address.TownCity</span>
}
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用这个; 它更简单,虽然不那么优雅
@{
var resultArray = Model.SearchResult.ToArray(); // only necessary if SearchResult is not a list or array
}
@for(var i = 0; i < resultArray.Length; i++)
{
var item = resultArray[i];
if (i % 2 == 0)
{
<span>Row @(i / 2)</span>
}
<span>| @item.Address.TownCity</span>
}
Run Code Online (Sandbox Code Playgroud)