【问题标题】:Passing Linq list to MVC web form将 Linq 列表传递给 MVC Web 表单
【发布时间】:2014-06-18 12:34:08
【问题描述】:

我想传递我的查询结果,然后我想迭代我的网络表单。这是我的清单

  var recentGames = game.OrderByDescending(c => c.OutcomeDateTime)
                                    .Take(3);

现在我正试图把它放在 ViewData 中

 ViewData["Elements"] = recentGames;

然后尝试循环查看我的视图上的 ViewData["Elements"]

 List<Games> t = (List<Games>)ViewData["Elements"];

recentGames 具有 Games 类属性,但我无法在我的视图(Web 表单)中初始化 Games 类并出现错误。有没有更好的方法将列表传递给查看,然后遍历循环以打印简单???

【问题讨论】:

    标签: c# asp.net-mvc linq asp.net-mvc-3 asp.net-mvc-4


    【解决方案1】:

    你可以像这样显示你的收藏的属性

    @foreach(var item in ViewData["Elements"] as IEnumerable<Game>) {
      // Display properties of Game e.g.
      @Html.DisplayFor(m => item.MyProperty)
    }
    

    【讨论】:

    • 我想打印我最近的游戏列表你能告诉我怎么做吗?我正在将我的列表传递到我的视图中,我如何在视图中访问]
    • 您是否尝试过上面的代码(只需将“MyProperty”替换为您的Game 类中的属性之一的实际名称
    • 我得到的对象引用未设置为对象的实例。
    【解决方案2】:

    recentGames 的类型不是 List&lt;Games&gt;。它是IQueryable&lt;Games&gt;IEnumerable&lt;Games&gt;,具体取决于game 的类型。

    更好的表达方式是recentGames 不是一个列表,而是一个查询。

    您需要做的是在查询末尾添加一个.ToList() 以将其变成一个列表。

    像这样:

    var recentGames =
        game
            .OrderByDescending(c => c.OutcomeDateTime)
            .Take(3)
            .ToList();
    

    【讨论】:

    • 然后如何使用 forach 循环在我的网络表单中打印?
    • @user3750312 - 对不起,我不是 MVC Web 开发人员。我只是看到你正在尝试的演员阵容的问题。
    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多