在博客文章细节上显示评论

本文关键字:显示 评论 细节 文章 | 更新日期: 2023-09-27 18:05:32

目前我有一个部分视图,显示与某个blogid关联的数据库中的评论。我这辈子都没法让这事成功。我甚至不知道如何将blogid传递给partial,所以我提取了正确的注释。以下是我到目前为止写的。

/Blog/Details评论部分

<h2>Comments</h2>
<hr/>
@if (!User.Identity.IsAuthenticated)
{
    <p>You Must Be Logged In To Comment.</p>
} 
else
{
    @: Posting comments as @User.Identity.Name<hr/>
    @Html.Action("Create", "Comment", new {blogId = Model.Id}); 
    @: <hr/>
}
@Html.Partial("_Comments")

_Comments partial view

@model IEnumerable<GregG.Models.Comment>
@foreach (var item in Model) {
    if (item.BlogId == 1) //I need to make this dynamic but can't figure out how to pass the id
    {
        <small>Posted by: @Html.DisplayFor(modelItem => item.UserName) on:                    @Html.DisplayFor(modelItem => item.PostedDate)</small>
        @Html.DisplayFor(modelItem => item.Meat)<hr/>
    }
}

我的第一个问题是:我如何将我的博客Id传递给部分。我的第二个问题是为什么在我的局部行上收到这个错误。

传入字典的模型项的类型是'System.Data.Entity.DynamicProxies '。Blog_18032B13AD6163845F0AE57E827683E3638FD813CA4EE066F28D05E5406E633D',但是这个字典需要一个类型为'System.Collections.Generic.IEnumerable ' 1[GregG.Models.Comment]'的模型项。

提前感谢您的帮助。

在博客文章细节上显示评论

支持为数据指定视图模型的Patial方法有几个重载。如果想要显示的注释已经是当前视图模型的一部分,请使用此方法。

@Html.Partial("_Comments", Model.Comments)

但是,如果它们不是视图模型的一部分,我建议在您的CommentController中创建一个单独的操作,如下所示:

Action List(int blogId)
{
    // query comments from database
    var model = db.Comments.Where(c => c.BlogId == blogId);
    return View(model);
}
从你的/Blog/Details.cshtml文件中调用它,像这样:
@Html.Action("List", "Comment", new { blogId = Model.Id })