Razor

2016-03-28 27 views
0

'daki iç döngü içerisine dinamik olarak satır eklenemiyor Bir sıraya 3 Cells görüntülemek ve sonra kalan hücreler için dinamik olarak satır <tr> oluşturmak. Bu mantığı aradığımda, modulo kullanımıyla ilgili birden fazla makaleden aynı yanıtı alıyorum ve evryone için çalışıyor gibi görünüyorum ancak istenen çıktıyı elde edemiyorum. Burada neyi özlüyorum?Razor

Kodu:

<table> 
    @for (var i = 0; i < deliveryProvider.DeliveryTagInfo.DeliveryProviderTagList.Count; i++) 
    { 
     var deliveryTag = deliveryProvider.DeliveryTagInfo.DeliveryProviderTagList[i]; 

     if ((i%3) == 0) //Create new row for 4th item 
     { 
      @:<tr> 
     } 
     <td> 
      <div class="input-element checkbox"> 
       @Html.CheckBoxFor(x => x.DeliveryProviderList[j].DeliveryTagInfo.IsDeliveryTagSelectedList[i], new 
       { 
        name = deliveryTag, 
        id = deliveryTag 
       }) 
       <label for="@deliveryTag"> 
        <span></span>@deliveryTag</label> 
      </div> 
     </td> 
     if ((i%3) == 0) 
     { 
      @:</tr> 
     } 
    } 
</table> 

Çıktı:

enter image description here

Beklenen Çıktı:

Test1 

ALCOHOL SPILLABLE COLD_BAG 

HOT_BAG HEAVY  SIZE 

Test2 

abc pqr xyz 

cevap

0

sorun kodunun bazıları kapanış etiketinden içindedir. İlk denemede

if ((i%3) == 0) 
    { 
     @:</tr> 
    } 

i% 3 == 0, yani ilk ekstresinde bir kapanış etiketi koydu. Aslında her üçte birde sadece <tr> etiketi yaratıyorsunuz. Yana

(i+1) % 3 == 0) 

:

var listCount = 11; 
for (var i = 0; i < listCount; i++) 
{ 
    if (i%3 == 0) 
    { 
     @:<tr> 
    } 

    //Add Checkboxes 

    //Closing Tag 
    if (((i+1) % 3 == 0)|| i == listCount - 1) 
    { 
     @:</tr>  
    } 
} 

Kapanış etiketiyle Açıklaması ...

kapanış etiketinden ilk koşulu için: Burada

Bunu düzeltmek nasıl bir örneğidir madde eklendi, biz üçüncü bir olup olmadığını kontrol etmek için - i + 1 kullanarak, ne kadar öğe satırda olduğunuzu bilecek ve eğer biz kapatmak olabilir. İkinci koşul için

:

i == listCount - 1 

Biz de son öğe ise hesaba gerekir. Örneğin, listede yalnızca 2 öğe varsa, yine de satırı kapatmamız gerekir.