簡體   English   中英

如何在控制器中顯示從Viewbag傳遞的數據以進行查看

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM