【问题标题】:MVC 2 - Display first result only in for each loopMVC 2 - 仅在每个循环中显示第一个结果
【发布时间】:2012-11-09 22:26:30
【问题描述】:

我有一个看起来相当基本的循环:

<% foreach (var item in Model.Items.OrderByDescending(b => b.ItemDateTime)) {%>

我只想输出第一个项目,而不是循环遍历所有项目,我该怎么做?

【问题讨论】:

  • Felipe Oriani 的解决方案有效,但根据 MVC 设计原则,您应该在加载视图之前解决此问题(即在模型层中的某个位置,但不一定在应该主要包含的视图模型中) (如果不是全部)POCO)。智能视图是一种反模式。

标签: asp.net-mvc model-view-controller asp.net-mvc-2 viewmodel


【解决方案1】:

您可以使用您收藏的FirstODefault() 方法。试试这样的:

// check if the model contains any item
if (Model.Items.Count() > 0)
{
    //show the item...
    var firstItem = Model.Items.OrderByDescending(b => b.ItemDateTime).FirstOrDefault();
}

【讨论】:

    【解决方案2】:

    为了扩展 Felipe 的评论,更好的设计通常是把这样的东西放在你的视图模型或控制器中,而不是视图中。

    你可以把它放在你的视图模型上

    public Item EarliestItem
    {
        get { return Items.OrderByDescending(b => b.ItemDateTime).FirstOrDefault(); }
    }
    

    然后在你的视图中使用它

    或者你想对最早的项目做什么。

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多