我有一个“td”,其中包含9张图片,我想将它们拆分为3个。所以我想得到一个这样的视图:
这是我的查看代码。
@for (int k = 0; k < Model.Count; k++)
{
<td>
<img src="(Model[k].Pic)" width="80" height="90" />
</td>
}
我试图用这段代码分割图片:
@for (int k = 0; k < Model.Count; k++)
{
<td>
<div>
<img src="(Model[k].Pic)" width="80" height="90" />
</div>
@if (k % 3 == 0)
{
@:<div></div>
}
</td>
}
但我不能分割图片。这是一个简单的代码,但我失败了。问题出在哪里?
答案 0 :(得分:2)
您可以创建一个LINQ方法来创建具有指定大小的分区:
public static class PartitionExtensions
{
private static IEnumerable<IEnumerable<T>> ToSizedPartition<T>(IEnumerable<T> source, int size)
{
int currentPartitionCount = 0;
T[] array = null;
foreach (T item in source)
{
if (array == null)
{
array = new T[size];
}
array[currentPartitionCount] = item;
currentPartitionCount++;
if (currentPartitionCount == size)
{
yield return array;
currentPartitionCount = 0;
array = null;
}
}
if (array != null)
{
Array.Resize(ref array, currentPartitionCount);
yield return array;
}
}
}
然后改变你的观点:
<td>
@foreach (var partition in Model.ToSizedPartition(3))
{
<div>
@foreach(var item in partition)
{
<img src="@item.Pic" width="80" height="90" />
}
</div>
}
</td>
答案 1 :(得分:1)
您可以简单地使用如下所述:
<table>
<tr>
<td>
@for (int k = 0; k < Model.Count; k++)
{
if (k % 3 == 0 && k != 0)
{
<div style="clear: both"></div>
}
<div style="float: left">
<img src="@Model[k].Pic" width="80" height="90" />
</div>
}
</td>
</tr>
</table>