2016-10-29 5 views
0

Ich muss komplexe HTML ausgeben, die IEnumerable in einer Razor-Seite in einer ASP.NET MVC 5-Site enthält.Alternative zu foreach in C# -Razor Seite

Ich möchte geschachtelte for-Schleifen verwenden, um den HTML-Code zu strukturieren - dies ist jedoch nicht möglich, wenn alle Objektausgaben in einer foreach-Schleife eingeschlossen sind.

Anstatt verwenden, um eine foreach Schleife, ist es eine Möglichkeit, so etwas zu tun, was das nächste Objekt in der Folge erhalten würde:

if (x = 1) 
{ 
    for (var x=0; x<2; x++) 
    { 
     <div class="row"> 
      for (var n=0; n<4; n++) 
      { 
       <div class="a"> 
        Model.GetNextObject.Name 
       </div> 
      } 
     </div> 
    } 
} 
else 
{ 
    <div class="b"> 
     Model.GetNextObject.Name 
    </div> 
} 

In vielen Fällen würde dies für viele eleganten Code ermöglichen.

Ist das möglich?

+0

Es ist ein wenig unklar von Ihrem Code, was Ihre Erfahrung die Ausgabe von diesem zu sein. Können Sie ein einfaches Beispiel für die Werte und die erwartete Ausgabe geben? –

+0

"In vielen Situationen würde dies viel eleganteren Code ermöglichen." - Warum sollte es so sein? Wofür brauchst du eine 'for'-Schleife? – duplode

+0

@duplode Sagen wir, ich möchte komplexe HTML-Struktur - und muss bei Bedingungen (z. B. Zeilen und Spannen/Spalten in Bootstrap) verwenden - Sie benötigen viele @: um Fehler in Razor zu stoppen. – niico

Antwort

4

ja, es ist möglich,

  1. die Referenz Holen mit GetEnumerator
  2. Aufruf Movenext-Methode Enumerator zum nächsten Elemente

Siehe diesen Stapelüberlauf Post Using IEnumerable with for loops

bewegen
var enumerator = getInt().GetEnumerator(); 
while(enumerator.MoveNext()) 
{ 
    var MyObject = enumerator.Current; 
    Console.WriteLine(MyObject.Property); 
} 
+0

Danke! Um die Antwort für zukünftige Benutzer zu verbessern, haben Sie hier eine Chance für ein Codebeispiel? – niico

+0

Der Link, den ich hier erwähnt habe, enthält den Beispielcode, ich möchte den Code nicht kopieren und einfügen, also habe ich den Code referenziert. Vielleicht werde ich in Zukunft mit dem Einfügen von Beispielcode beginnen. – Ramakrishnan

+0

Danke - Stack-Überlauf wie der Code in der Antwort sein - anstatt eine externe Referenz - ich denke aus Bequemlichkeit - und im Falle, dass Link zu einem bestimmten Zeitpunkt in Zukunft tot wird. Ich habe hier eingefügt - thx. – niico