2016-03-28 43 views
0

有一个最好的方法来写这段代码? (不validade如果在索引元件i不为空)对于在asp.net mvc索引循环查看

我要加载,每行数据3引导卡,并把它在3列

实施例和代码:

1. CARD 1 CARD 2 CARD 3 
2. CARD 4 CARD 5 CARD 6 

@for (int i = 0; i < Model.Count()-1; i+=3) 
{ 
    <div class="row top30"> 
     <div class="col-md-4"> 
      @Html.Partial("~/Views/Product/Card.cshtml", Model.ElementAtOrDefault(i)) 
     </div> 
     @if (Model.ElementAtOrDefault(i + 1) != null) 
     { 
     <div class="col-md-4"> 
      @Html.Partial("~/Views/Product/Card.cshtml", Model.ElementAtOrDefault(i + 1)) 
     </div> 
     } 
     @if (Model.ElementAtOrDefault(i + 2) != null) 
     { 
     <div class="col-md-4"> 
      @Html.Partial("~/Views/Product/Card.cshtml", Model.ElementAtOrDefault(i + 2)) 
     </div> 
     } 
    </div> 
} 

回答

1

这一个较短

@for (int i = 0; i < Model.Count()-1; i+=3) 
{ 
    <div class="row top30"> 
     @for (int j = 0; j < 3; j++) 
     { 
      @if (j == 0 || (Model.ElementAtOrDefault(i + j) != null)) 
      { 
       <div class="col-md-4"> 
        @Html.Partial("~/Views/Product/Card.cshtml", Model.ElementAtOrDefault(i + j)) 
       </div> 
      } 
     } 
    </div> 
} 
+0

Ofcourse。谢谢。 – Rieth

0

您可以遍历所有的牌,只是插入新行时,它的第三张牌已经:

<div class="row top30"> 
    @for (int i = 0; i < Model.Count()-1; i++) 
    { 
     @if (Model.ElementAtOrDefault(i) != null) 
     { 
      <div class="col-md-4"> 
       @Html.Partial("~/Views/Product/Card.cshtml", Model.ElementAtOrDefault(i)) 
      </div> 
     } 
     @if (i == 2) 
     { 
      </div> 
      <div class="row top30"> 
     } 
    } 
</div> 

}

+0

感谢您的解决方案。 – Rieth