如何在剃须刀中使用两个if语句进入foreach?

时间:2016-03-26 05:26:16

标签: html asp.net-mvc razor

我试着在foreach中使用两个if语句,比如这个,但是我收到了这个错误:

  

遇到结束标记" div"没有匹配的开始标记。是你的   开始/结束标签是否正确平衡?

我希望这是条件:如果变量i小于我希望成为带有行类的div元素中此代码的一部分。

<text>
    <div class="col-xs-2 col-wrapper">
        <div class="image-wrapper">
            <img src="@Url.Content(path + item.PhotoName)" alt="" />
            <img class="delimg" src="~/Content/Adminex/images/delete-icons.png" id="@item.Id" />
        </div>
    </div>
</text>

。请咨询,

       @{
    string path = System.Configuration.ConfigurationManager.AppSettings["ImageEdit"];
    int i = 0;
    }
    @foreach (var item in Model.PhotoTables)
    {
        if (i == 7)
        {
            i = 0;
        }
        if (i < 1)
        {
            @:<div class="row">

        }


        <text>
            <div class="col-xs-2 col-wrapper">
                <div class="image-wrapper">
                    <img src="@Url.Content(path + item.PhotoName)" alt="" />
                    <img class="delimg" src="~/Content/Adminex/images/delete-icons.png" id="@item.Id" />
                </div>
            </div>
        </text>
        if (i < 1)
        {

            @:</div>
            }

        i++;
    }

3 个答案:

答案 0 :(得分:1)

</div>以上i++看起来很可疑。

编辑:

现在我想我明白了,你想在每个div行中各有7个文本项(最后一行中有任何余数)。这是众多方式中的一种......

@foreach (var item in Model.PhotoTables) {
  if (i < 1) {
    @:<div class="row">
  }
  <text>
    ...item...
  </text>
  i++;
  if (i == 7) {
    i = 0;
    @:</div>
  }
}
if (i > 0) {
  @:</div>
}

如果这就是你想要的那样产生这个......

<div class="row">
   <text>..1..</text>
   <text>..2..</text>
   <text>..3..</text>
   <text>..4..</text>
   <text>..5..</text>
   <text>..6..</text>
   <text>..7..</text>
</div>
<div class="row">
   <text>..8..</text>
</div>

答案 1 :(得分:1)

如果我没有错,您希望在text时将<div class="row">标记包裹在i < 1中。所以你可以试试这个。它对我有用。

@{
    string path = System.Configuration.ConfigurationManager.AppSettings["ImageEdit"];
    int i = 0;
}
    @foreach (var item in Model.PhotoTables)
    {
        if (i == 7)
        {
            i = 0;
        }
        if (i < 1)
        {
            <div class="row">
                <text>
                    <div class="col-xs-2 col-wrapper">
                        <div class="image-wrapper">
                            <img src="@Url.Content(path + item.PhotoName)" alt="" />
                            <img class="delimg" src="~/Content/Adminex/images/delete-icons.png" id="@item.Id" />
                        </div>
                    </div>
                </text>
            </div>
        }
        else
        {
            <text>
                <div class="col-xs-2 col-wrapper">
                    <div class="image-wrapper">
                        <img src="@Url.Content(path + item.PhotoName)" alt="" />
                        <img class="delimg" src="~/Content/Adminex/images/delete-icons.png" id="@item.Id" />
                    </div>
                </div>
            </text>
        }

        i++;
    }

答案 2 :(得分:0)

我认为这样做会有所帮助。使用模数运算符来确定您是在开始还是在计数结束时7,如果项目不是7,则结束div仍然存在

    @{
string path = System.Configuration.ConfigurationManager.AppSettings["ImageEdit"];
int i = 0;
int modelCount = Model.PhotoTables.Count();
}
@foreach (var item in Model.PhotoTables)
{
    //if (i == 7)
   // {
    //    i = 0;
   // }
    if (i % 6 == 0)
    {
        @:<div class="row">

    }


    <text>
        <div class="col-xs-2 col-wrapper">
            <div class="image-wrapper">
                <img src="@Url.Content(path + item.PhotoName)" alt="" />
                <img class="delimg" src="~/Content/Adminex/images/delete-icons.png" id="@item.Id" />
            </div>
        </div>
    </text>
    if (i % 6 == 5 || i == modelCount - 1)
    {

        @:</div>
        }

    i++;
}