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

时间:2015-12-15 15:36:21

标签: model-view-controller asp.net-mvc-5 asp.net-mvc-partialview

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

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

我已准备好所有观点,到目前为止,我的表格显示在我的帖子视图的底部。

我要做的是将我的评论视图添加到表单上方的帖子视图中。

评论控制器

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

发布详细信息视图

@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

我得到的错误是:

  

传递到字典中的模型项是'MyProject.Models.Comment'类型,但是这个字典需要一个类型为'System.Collections.Generic.IEnumerable`1 [MyProject.Models.Comment]'的模型项。 / p>

有人能告诉我这是怎么回事吗?我已经尝试将部分更改为Html.RenderPartial,但也无效。

1 个答案:

答案 0 :(得分:0)

如果仔细观察,您会看到部分视图需要集合 ,并且您正在传递 单个对象

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

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

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