2016-03-24 5 views
0

Ich versuche, zwei zu verwenden, wenn Anweisung in foreach wie dies aber in der zweiten if-Anweisung erhält error.Please BeratungWie zu verwenden, wenn Aussage in foreach im Rasiermesser?

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

Was ist der Fehler Sie bekommen? Haben Sie '@if (i <1)' auf dem zweiten versucht, wenn, wie Sie von HTML zu Rasiermesser umziehen? – Rhumborl

+0

Ja, ich habe verwendet: Parser Fehlermeldung: Der using-Block fehlt ein schließendes Zeichen "}". Stellen Sie sicher, dass für alle "{" - Zeichen in diesem Block ein übereinstimmendes "}" - Zeichen vorhanden ist und keines der Zeichen "}" als Markup interpretiert wird. – programmer138200

+0

Es scheint, dass Sie Bootstrap verwenden, und basierend auf Ihrem Code haben Sie 'col-xs-2', die außerhalb einer Zeile liegen wird, die technisch für Bootstrap ungültig ist. –

Antwort

1

Sie scheinen eine zusätzliche Schließ div ohne passende Start-Tag zu haben.

Ihr Codeblock kann die gesamte Logik enthalten. Versuchen:

@{ 
     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++; 
     } 
    } 

Sie müssen nur das @ -Symbol auf dem enthaltenden Codeblock.

Der @ -Symbol nicht erforderlich, wenn Sie direkt tatsächliche Codeblocks Nest (nicht HTML), so dass die ersten foreach und if sind ok, aber dann gehen wir in HTML, und dann für die zweiten if zu Code zurück - wir muss ein @ verwenden.

+0

In diesem Fall Fehler behoben, aber zweite wenn nicht funktionieren und auf der Seite wie Text angezeigt werden. – programmer138200

+0

Ich hätte mehr erklären sollen, und ich habe Antwort entsprechend bearbeitet ... Das @ -Symbol wird nicht benötigt, wenn Sie tatsächlich Codebausteine ​​verschachteln (nicht HTML), also die erste "foreach" und "if" sind ok, aber Nachdem wir wieder in HTML gegangen sind, müssen wir @ verwenden, damit das zweite "if" eines braucht. – Stuart

+0

Fehler in der Vorschau. – programmer138200

0

manuell eine Variable innerhalb einer foreach Anweisung Manipulation möglicherweise zu Schwierigkeiten führen kann. Nutzen Sie stattdessen die aktuelle Framework-Methode Select().

Modell:

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

Rasiermesser:

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

Ergebnisse:

0 A

1 B

2 C

DotNetFiddle MVC Example

Verwandte Themen