在详细信息视图中呈现部分列表视图和部分表单

Rendering a partial list view and partial form within a details view

所以我正在尝试在 post 视图中创建评论表单和评论视图​​。

基本上我的博客有一个 post 视图,我想在每个视图上显示一个评论表单和一个评论部分。

我已经准备好所有视图,到目前为止,我的表单显示在 post 视图的底部。

我想要做的是将我的评论视图添加到表单上方的 post 视图。

评论控制器

// GET: /Comments/_AllComments - Partial view
public ViewResult _AllComments(int postid)
{
     TempData["PostId"] = postid;
     return View("_AllComments");
}

Post 详细视图

@model MyProject.Models.Post

//MARKUP  OMITTED

//Comments Partial View
@Html.Partial("_AllComments", new Invest.Models.Comment())

//Comments Form Partial View
@Html.Partial("_Comment_Form", new Invest.Models.Comment())

部分视图 - 所有评论

@model IEnumerable<MyProject.Models.Comment>

//MARKUP OMITTED

我得到的错误是:

The model item passed into the dictionary is of type 'MyProject.Models.Comment', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[MyProject.Models.Comment]'.

有人能告诉我如何解决这个问题吗?。我试过将部分更改为 Html.RenderPartial,但也没有用。

如果您仔细观察,您会发现您的 部分视图需要一个 集合 而您正在传递 a 单个对象.

要解决此问题,您可以将部分行更改为如下所示:

//Comments Partial View
@Html.Partial("_AllComments", new List<Invest.Models.Comment>(){ new Invest.Models.Comment()})

注意: 如果您想使用该操作的结果(部分视图),Html.ActionHtml.RenderAction 用于执行此操作。