使用模型在局部视图中迭代仅在不使用partialview时有效

时间:2017-01-26 16:02:33

标签: c# asp.net asp.net-mvc partial-views

我正试图从数据库中获取一些帖子。在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循环中。

我该如何解决这个问题?

2 个答案:

答案 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>。这就是部分视图中Modelnull的原因。