如何在Html代码中正确使用if模式语句

时间:2015-01-07 08:16:27

标签: html asp.net-mvc

我有一个“td”,其中包含9张图片,我想将它们拆分为3个。所以我想得到一个这样的视图:

  • Pic1 Pic2 Pic3
  • Pic4 Pic5 Pic6
  • Pic7 Pic8 Pic9

这是我的查看代码。

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

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

2 个答案:

答案 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>