【问题标题】:How to use two if statement into foreach in razor?如何在剃刀的foreach中使用两个if语句?
【发布时间】:2016-03-26 18:56:57
【问题描述】:

我尝试在 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++;
    }

【问题讨论】:

    标签: html asp.net-mvc razor


    【解决方案1】:

    如果我没记错的话,你想在i &lt; 1 时将text 标签包装在&lt;div class="row"&gt; 中。所以你可以试试这个。它对我有用。

    @{
        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】:

      i++ 上方的 &lt;/div&gt; 看起来很寂寞。

      编辑:

      现在我想我明白了,您希望每个 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>
      

      【讨论】:

      • 好的。你说得对。我更改了我的代码。现在可以工作,但不要将
        添加到第一个代码中。如何解决?
      【解决方案3】:

      我认为这可以解决问题。使用模数运算符来确定您是在计数到 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++;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-29
        • 1970-01-01
        • 1970-01-01
        • 2012-06-30
        • 2016-06-28
        • 2013-10-18
        • 1970-01-01
        相关资源
        最近更新 更多