2014-01-13 98 views
2

IM希望這將是一個輕鬆的一年..Foreach循環 - 顯示項目不同,前3項,項目4-6等

我有一個項目清單在我MVC視圖,第3我想在內部顯示項目6-10內的項目。下面

例子:

@foreach (var Article in @Model.ContentList) 
{ 

// for Items 1 - 3 
<h1>@Article.Title</h1> 


// for Items 4 - 7 
<h2>@Article.Title</h2> 

// for Items 7 + 
<h3>@Article.Title</h3> 

} 

請告訴我這樣做,我認爲裏面最好的方式?

回答

4

使用for循環而不是foreach。

@for (int i = 0; i < Model.ContentList.Count; i++) 
{ 
    var Article = Model.ContentList[i]; 
    if (i < 3){ 
     // for Items 1 - 3 
     <h1>@Article.Title</h1> 
    } else if (i < 7){ 
     // for Items 4 - 7 
     <h2>@Article.Title</h2> 
    } else { 
     // for Items 7 + 
     <h3>@Article.Title</h3> 
    } 
} 
+0

感謝,正是我一直在尋找。 – Dez79

+0

不客氣,先生! –

3

我認爲一個更好的答案是重新設計你的model

Article類應該包括它本身有什麼樣的標題,例如...

public class Article 
{ 
    public string Title { get; set; } 
    public string Type { get; set; } // for example 
} 

然後在您的視圖

@foreach (var Article in @Model.ContentList) 
{ 

    if(Article.Type == "Big") 
    { 
     <h1>@Article.Title</h1> 
    } 
    else if(Article.Type == "Medium") 
    { 
     <h2>@Article.Title</h2> 
    } 
    else if(Article.Type == "Small") 
    { 
     <h3>@Article.Title</h3> 
    } 
} 
+1

+1。這是避免任意數字並且定義更具體的東西的唯一(當前)答案。 –

+0

@ Moo-Juice謝謝,是的,我儘量避免像其他人在我的觀點中所建議的邏輯。只是覺得很髒。 –

+0

感謝Moo-Juice,我明白你的意思了。在控制器中的邏輯。 Mzetko提供了我之後的東西,但是需要思考。 – Dez79