【问题标题】:Foreach Loop - Display items differently, first 3 item, items 4-6 etcForeach 循环 - 以不同方式显示项目,前 3 个项目,第 4-6 个项目等
【发布时间】:2014-01-13 13:08:36
【问题描述】:

我希望这将是一个简单的..

我的 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>

}

在我看来最好的方法是什么?

【问题讨论】:

    标签: c# asp.net-mvc loops foreach


    【解决方案1】:

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

    【讨论】:

    • 谢谢,正是我想要的。
    【解决方案2】:

    我认为更好的答案是重新设计您的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。这是唯一(当前)避免使用任意数字并定义更具体内容的答案。
    • @Moo-Juice 谢谢,是的,我尽量避免像其他人在我的观点中建议的逻辑。只是感觉很脏。
    • 谢谢 Moo-Juice,我明白你的意思了。在控制器中执行逻辑。 Mzetko 提供了我所追求的东西,但值得深思。
    • @Dez79 让你知道,是我回答了这个问题 :)
    • 道歉松鼠 - Brain Fog Monday - 谢谢!
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多