目前,我有一个部分视图,显示与某个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 ]”。
提前感谢您的帮助。
答案 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 })