2016-04-13 16 views
0

Bir dizi görüntü boyunca yinelemeye çalışıyorum ve üst üste 3 görüntü aldıktan sonra bir sonraki satıra geçiyorum. Razor'la sözdizimi hataları alıyorum, eğer if ifadesinde "@" karakterine ihtiyacım yok. Ancak onları kaldırdığımda bana bir kapatma braketini kaçırdığımı söyler. Hiçbir yerde eksik bir destek göremiyorum. İşte benim kodum.Razor C# görüntü dizisi içinden foreach döngüsü

<!-- MATRIX --> 
<div> 
<table class="table table-responsive"> 
    <tr> 

    @{ 
     int c = 0; 
    } 

    @foreach (var x in portifolioImages) 
    { 
     c++; 
     <td><img src="@x.UmbracoFile" alt="@x.imageTitle" style="margin:0  auto;" /></td> 
     @if (c == 3) 
     { 
      </tr><tr> 
     } 
    } 

</tr> 
</table> 
</div> 
<!-- END MATRIX --> 
+0

Soruyu yanıtlamıyorsunuz, ancak neden bir tabloyu CSS içeren bir grup "div" öğesinin değil de kullanıyorsunuz? – DavidG

+0

evet yapabilirdim ama sadece HTML'yi değiştirirdim. HTML, düşünmediğim bir konu değil. If ifadesini kaldırırsam, kod çalışır. Görüntüleri büyük bir sıraya yerleştirir, ancak en azından düzgün bir şekilde yürütür. –

cevap

2

Bu hat

@if (c == 3) 
{ 
</tr><tr > 
} 

</tr><tr > C# kodu değil. Bu yüzden, usturaya HTML olarak davranmasını söylemelisiniz. Bunu @: önekiyle yapabilirsiniz. Önceden kod satırında (foreach) varsa, @'un önüne gerek yoktur.

if (c == 3) 
{ 
    @:</tr><tr > 
} 

Ama öğe sayısı 3. Yani başka koşul ise o kısmı (tr açılması) hareket etmeli olabilir olduğunda bu kod hala açık tr etiketi üretecektir. Bu kod gayet iyi çalışmalıdır.

<table> 
    @{ var counter = 1; } 

    @foreach (var item in Model.Events) 
    { 
     if (counter==1) 
     { 
      @:<tr> 
     } 
     <td>Your content</td> 
     if (counter % 3 == 0) 
     { 
      @:</tr> 
      counter = 1; 
     } 
     counter++; 
    }  
</table> 
+0

çok teşekkürler. Ama ilk satır 3 sütun, satırların geri kalanı sadece 2'dir. Bununla uğraşmaya devam edeceğim :) teşekkürler –

İlgili konular