Model view controller 在详细信息视图中呈现部分列表视图和部分表单
所以我尝试在post视图中创建一个评论表单和评论视图 基本上,我的博客上有一个帖子视图,我想在每个帖子上显示一个评论表单和一个评论部分 我已经准备好了所有视图,到目前为止,我的表单显示在我的post视图的底部 我想做的是将我的评论视图添加到表单上方的post视图中 评论控制器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
// 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的方式不同,请先阅读该方法的签名,你可以搜索使用它的示例,其中有很多。