在Blog Post Details上显示评论

时间:2013-03-25 02:52:01

标签: c# asp.net asp.net-mvc

目前,我有一个部分视图,显示与某个blogid关联的数据库中的注释。我不能让这个为我的生活工作。我甚至无法弄清楚如何将blogid传递给partial,所以我提出正确的评论。这是我到目前为止所拥有的。

/博客/详情评论部分

<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 ]”。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Patial方法有几个重载支持指定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 })