[英]How can I display specific range of items in an ASP.NET MVC view passed from ViewBag in array
[英]How do i display data passed from viewbag in controller to view
我试图在视图中使用@(viewbag.data2中的foreach var x)循环显示
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.data2中编写以下代码
它将为您提供数据。
并将调试器放在上面。 您将了解其余内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.