0

目前我有一个部分视图,显示来自与某个 blogid 关联的数据库的评论。我不能让它为我的生活工作。我什至不知道如何将 blogid 传递给部分,所以我提取了正确的评论。这是我到目前为止所拥有的。

/博客/详情评论部分

<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")

_评论部分视图

@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]”类型的模型项。

提前感谢您的帮助。

4

1 回答 1

1

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 })
于 2013-03-25T02:56:58.990 回答