我有一个包含9张图片的“td”,我想把它们3除以3。所以我想看到这样的景象:
图1图2图3
图4图5图6
图7图8图9
这是我的视图代码。

@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>
  }

但我不能分开照片。这是一个简单的代码,但我失败了。问题在哪里?

最佳答案

您可以创建一个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>

关于html - 如何在HTML代码中正确使用If模式语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27815026/

10-10 12:26
查看更多