2014-01-13 151 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