我有一个如下的复合ViewModel:
public class HomeListViewModel
{
public HomeSearchRequestViewModel SearchRequest { get; set; }
public List<BasicAdSummaryViewModel> AdSummayResults { get; set; }
}
在我的视图中,我要渲染2个PartialViews,如下所示:
@model MyNameSpace.HomeListViewModel
<div>
@Html.Partial("_SearchRequest", Model.SearchRequest)
@Html.Partial("_AdSummary", Model.AdSummayResults)
</div>
这是我的_SearchRequest PartialView
@model MyNameSpace.HomeSearchRequestViewModel
<div>
@Html.EditorFor(m => m.Keyword, new { htmlAttributes = new { @class = "form-control", @type = "text"} })
</div>
这是我的_AdSummary PartialView:
@model IEnumerable<MyNameSpace.BasicAdSummaryViewModel>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
</tr>
第一个PartialView呈现良好,但是我在第二个PartialView上得到了这个错误:
System.InvalidOperationException:'将模型项传递到 字典的类型 'MyNameSpace.HomeListViewModel',但这 字典需要类型为的模型项 “ System.Collections.Generic.IEnumerable`1 [MyNameSpace.BasicAdSummaryViewModel]”。
仅在使用列表视图模型渲染部分视图时出现此错误...
答案 0 :(得分:1)
致电
时会出现此错误消息 @Html.Partial("_AdSummary", null)
MVC似乎被null视图模型所混淆;它无法确定null
的类型,因此假定该类型与当前视图模型相同。
解决方案是确保Model.AdSummayResults
永远不会是null
。