我试图在视图中使用 @(foreach 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;
我收到无效的操作异常
你的语法有点错误。
它应该是:
@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>
要访问 viewbag,请在视图中编写以下代码@ViewBag.数据2
它将为您提供数据。
并将调试器放在其上。其余的你都会明白的。