ViewBag returns 在 PartialView 中为空,但在调试器中显示值

ViewBag returns empty in PartialView but shows the value in debugger

我正在尝试 return 从我的控制器到 PartiaView 通过 ViewBag 的值,但它根本不显示该值。

这是我的控制器:

public PartialViewResult Index(int articleid)
{
    var allcomments = _db.SelectAll();
    var comments = from c in allcomments
        where c.ArticleID == articleid
        select c;

    var result = comments.ToList();

    ViewBag.CommentCount = result.Count;

    return PartialView(result);
}

我运行另一个视图中的动作方法使用Html.RenderPartial():

@using ClearBlog.Helpers
@model ClearBlog.Models.ViewModels.SingleArticleViewModel

@{
    ViewBag.Title = "Details";
}

// stuff here

@{ Html.RenderAction("Index", "Comments", new { articleid = 6002 }); }

最后是局部视图:

@using AutoMapper.Internal
@model IEnumerable<ClearBlog.Models.Comment>

@ViewBag.CommentCount Comment(s):

@foreach (var item in Model)
{
    // some stuff
}

在局部视图中,它不呈现任何内容,但如果我在局部视图中设置断点,那么在局部选项卡的调试器中它会显示正确的值:

在局部视图文件的第 4 行 @ViewBag.CommentCount 应该是 @ViewBag.CommentCount.ToString()。也可以在将值分配给 ViewBag 之前在控制器中进行转换,这样我们就不必在视图中进行转换。