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

Model view controller 在详细信息视图中呈现部分列表视图和部分表单,model-view-controller,asp.net-mvc-5,asp.net-mvc-partialview,Model View Controller,Asp.net Mvc 5,Asp.net Mvc Partialview,所以我尝试在post视图中创建一个评论表单和评论视图 基本上,我的博客上有一个帖子视图,我想在每个帖子上显示一个评论表单和一个评论部分 我已经准备好了所有视图,到目前为止,我的表单显示在我的post视图的底部 我想做的是将我的评论视图添加到表单上方的post视图中 评论控制器 // GET: /Comments/_AllComments - Partial view public ViewResult _AllComments(int postid) { TempData["PostI

所以我尝试在post视图中创建一个评论表单和评论视图

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

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

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

评论控制器

// 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
@model IEnumerable
//省略标记
我得到的错误是:

传递到字典的模型项的类型为“MyProject.Models.Comment”,但此字典需要“System.Collections.Generic.IEnumerable”“1[MyProject.Models.Comment]”类型的模型项


有人能告诉我怎么避开这个吗?。我已尝试将部分视图更改为
Html.RenderPartial
,但也不起作用。

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

要解决此问题,可以将带有partial的行更改为如下所示:

//Comments Partial View
@Html.Partial("_AllComments", new List<Invest.Models.Comment>(){ new Invest.Models.Comment()})
//注释部分视图
@Html.Partial(“_AllComments”,new List(){new Invest.Models.Comment()})

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

你好,Adricadar,谢谢您的帮助。我已经添加了这些内容,现在又遇到了另一个问题。{“路径'/Post/Details/4'的控制器未找到或未实现IController。”}这正是这些局部视图所在的视图。如果我删除这一行:@Html.Action(“\u AllComments”,“Comments”,new List(){new MyProject.Models.Comment()}),我不确定这是什么意思。它工作正常,但当然不会显示局部视图。@AndyMc您使用Html.Action的方式与使用Html.partial的方式不同,请先阅读该方法的签名,你可以搜索使用它的示例,其中有很多。