c#MVC将组数据传递给查看

时间:2014-06-17 17:50:54

标签: c# asp.net-mvc linq

我有一个显示模型的视图,但在模型中我还要显示来自控制器中以下linq的另一个模型的小数据表

var StudentRatings = db.LearnerRatings
                .Where(i => i.LessonId == id)
                .GroupBy(i => i.Rating)
                .Select(group => new { Rating = group.Key, TotalCount = group.Count() });

ViewBag.Ratings = StudentRatings;

我已经从控制器返回了另一个模型,所以已将其添加到ViewBag中。 我以为我可以用foreach迭代这些

foreach (var ratings in ViewBag.Ratings){
        @ratings.TotalCount
}

但是收到错误 - 附加信息:'object'不包含'TotalCount'的定义

我认为这必须被投射?如果是这样,它会被投放到什么地方?

这是上述的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

匿名类型不应该遍历方法边界:也就是说,您的View不知道ratings是什么类型。

将您的匿名类型更改为命名的结构或类,然后您可以这样做:

class Rating {
    public Int32 Rating { get; set; }
    public Int32 TotalCount { get; set; }
}

...
.Select(group => new Rating { Rating = group.Key, TotalCount = group.Count() });
...

foreach(Rating rating in ViewBad.Ratings) {
    @rating.TotalCount
}