[英]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.