2016-10-29 91 views
0

我需要在ASP.NET MVC 5站點的Razor頁面中輸出包含IEnumerable的複雜HTML。替代foreach在C#剃刀頁

我想使用嵌套for循環來構造HTML - 但是,如果所有對象輸出都包含在foreach循環中,這是不可能的。

除了使用foreach循環,有沒有辦法做這樣的事情,其將獲得序列中的下一個對象:

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

在許多情況下,這將允許更優雅的代碼。

這可能嗎?

+0

它從你的代碼有點不清楚你的經歷從這個輸出結果。你能給出一個簡單的例子,說明值和期望的輸出 –

+0

「在很多情況下,這將允許更優雅的代碼。」 - 爲什麼會這樣?你需要一個'for'循環來做什麼? – duplode

+0

@duplode說我想要複雜的HTML結構 - 並且需要使用條件(例如行和跨度/自舉中的列) - 您需要很多@:來阻止Razor中出現的錯誤。 – niico

回答

4

是的,這是可能的,

  1. 獲取參考使用的GetEnumerator
  2. 呼叫MoveNext方法移動到下一個元素

請參閱此堆棧溢出後 Using IEnumerable with for loops

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

謝謝!爲了改善未來用戶的答案,在這裏粘貼代碼示例的機會? – niico

+0

我在這裏提到的鏈接包含示例代碼,我不想複製和粘貼代碼,所以我引用了代碼。可能將來我會開始粘貼示例代碼。 – Ramakrishnan

+0

謝謝 - 堆棧溢出就像代碼中的答案 - 而不是使用外部引用 - 我想爲了方便 - 以及在未來的某個時刻該鏈接死掉的情況。我粘貼在這裏 - thx。 – niico