我正试图从数据库中获取一些帖子。在posts索引页面中打开但在主索引中不能正常工作。作为部分视图,我为PostViewModel
创建了PostModel
。
这是代码:
在Index.cshtml(帖子)中:
@model IEnumerable<Project.Models.Post>
@foreach (var item in Model) { @item.Name }
在Index.cshtml(Main)中:
@model Project.Models.ViewModels.PostViewModel
@Html.Partial("~/Views/Posts/Index.cshtml", Model)
当我运行该项目时,它会抱怨 System.NullReferenceException
在foreach
循环中。
我该如何解决这个问题?
答案 0 :(得分:0)
当您将Model从主视图传递给@Html.Partial
时,它无法将其转换为IEnumerable<Post>
,这是部分视图所期望的,这就是您看到NullReferenceException的原因。
如果PostViewModel类中有一个属性代表Post的集合,那么你应该尝试在@Html.Partial
假设您在PostViewModel类中有一个属性类型为List<Post>
的帖子,那么您应该将其用作以下内容。
@Html.Partial("~/Views/Posts/Index.cshtml", Model.Posts)
答案 1 :(得分:0)
当局部视图被称为&#34;&#34; Model变量在内部设置为
Model = instance as IEnumerable<Project.Models.Post>;
您传递的实例属于Project.Models.Post
类型,因此无法转换为IEnumerable<Project.Models.Post>
。这就是部分视图中Model
为null
的原因。