我试图在视图中使用@(forview var x in viewbag.data2)循环显示
var data = from c in _context.Posts
join p in _context.PostViewCount on c.Id equals p.PostId
select new
{
posts = c,
p.Count,
c.Title,
p.PostId
};
var dat = data.OrderByDescending(x=>x.Count).ToList();
ViewBag.data2 = dat;
我收到无效的操作异常
答案 0 :(得分:0)
您的语法有点错误。
应该是:
@foreach(var x in ViewBag.data2){
@x.Count
@x.Title
}
编辑:dynamic
类型似乎有点混乱。此示例说明如何使用已定义的模型。
为您的数据创建一个类,而不是使用匿名对象。
public class PostsModel
{
public string Title { get; set; }
public int Count { get; set; }
// etc...
}
修改您的查询...
var data = from c in _context.Posts
join p in _context.PostViewCount on c.Id equals p.PostId
select new PostsModel
{
Count = p.Count,
Title = c.Title,
// etc...
};
var dat = data.OrderByDescending(x=>x.Count).ToList();
ViewBag.data2 = dat;
然后将您的Viewbag
变量转换为正确的类型...
@foreach(PostsModel x in ((IEnumerable<PostsModel>)ViewBag.data2)){
@x.Count
@x.Title
}
您可能必须使用以下命令将正确的命名空间导入视图:@using <namespace>
答案 1 :(得分:-1)
要访问viewbag,请在您的视图中编写以下代码 @ ViewBag.data2
它将为您提供数据。
并在其上放置调试器。剩下的你会明白的。