2016-03-24 12 views
0

Böyle deyimi hatası oldu.Lütfen tavsiyeUstura'da foreach ifadesi kullanılıyorsa nasıl kullanılır?

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


        <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> 

        @if (i < 1) 
        { 
       </div>} 
</div> 

       i++; 
      } 
+0

? Eğer html'den usturaya geçerken, iif (i <1) 'i denediniz mi? – Rhumborl

+0

Evet Ben kullandım: Ayrıştırıcı Hata İletisi: Kullanan satırda bir kapanış "}" karakteri eksik. Bu bloktaki "{" karakterlerin tümü için eşleşen "}" karaktere sahip olduğunuzdan ve "}" karakterlerinden hiçbirinin biçimlendirme olarak yorumlanmadığından emin olun. – programmer138200

+0

Görünüşe göre bootstrap kullanıyorsunuz ve kodunuza göre 'boot-scrap 'için teknik olarak geçersiz olan' row'ın dışında olacak' col-xs-2 'olacaksınız. –

cevap

1

alırsanız bu şekilde ancak ikinci foreach içine deyimi Hiçbir eşleşen başlangıç ​​etiketi ile fazladan kapanış div var gibi yoksa iki kullanmayı deneyin.

Kod bloğunuz, tüm mantığı içerebilir. Şunları yapın:

@{ 
     string path = System.Configuration.ConfigurationManager.AppSettings["ImageEdit"]; 
     int i = 0; 

     foreach (var item in Model.PhotoTables) 
     { 
      if (i < 1) 
      { 
       <div class="row"> 
      } 

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

      @if (i < 1) 
      { 
       </div> 
      } 

      i++; 
     } 
    } 

Sadece içeren kod bloğundaki @ sembolüne ihtiyacınız var. doğrudan yuva gerçek kod blokları (değil HTML), bu yüzden ilk foreach ve if Tamam olduğunda

@ sembolü gerekli değildir, ama sonra HTML içine gidin ve sonra geri ikinci if için koda - biz bir @ kullanmanız gerekir.

+0

Bu durumda hata çözüldü ancak metin gibi sayfada çalışma ve görüntüleme. – programmer138200

+0

Daha fazla bilgi vermeliydim ve buna göre cevabı düzenledim ... Gerçek kod bloklarını (HTML değil) doğrudan yerleştirdiğinizde @ sembolüne gerek yoktur, böylece ilk "foreach" ve "if" tamam, fakat HTML'ye tekrar girdikten sonra @ 'ı kullanmalıyız, böylece ikinci "if" kelimesi bir tanesine ihtiyaç duyar. – Stuart

+0

Önizleme hatası alın. – programmer138200

0

foreach ifadesinin ifadesi içindeki bir değişkeni manuel olarak değiştirmesi, numaralı sorunun neden olabilir. Bunun yerine, geçerli çerçeve yöntemi Select() yararlanın.

Modeli:

var model = new SampleViewModel 
     { 
      Items = new List<string> 
      { 
       "A", 
       "B", 
       "C" 
      } 
     }; 
     return View(model); 
    } 

Jilet:

@foreach(var item in Model.Items 
     .Select((value, index) => new { Value = value, Index = index })) 
    { 
     if (item.Index < 1) 
     { 
      <div class="row"> 
     } 

     <div>@item.Index @item.Value</div> 

     if (item.Index < 1) 
     { 
      </div> 
     } 
    } 

Sonuçlar:

0 bir

1. Oda

2 C alıyorsanız hata nedir

DotNetFiddle MVC Example