无法使用列表ViewModel渲染PartialView

时间:2018-07-04 13:51:04

标签: asp.net-mvc asp.net-mvc-4

我有一个如下的复合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]”。

仅在使用列表视图模型渲染部分视图时出现此错误...

1 个答案:

答案 0 :(得分:1)

致电

时会出现此错误消息
 @Html.Partial("_AdSummary", null)

MVC似乎被null视图模型所混淆;它无法确定null的类型,因此假定该类型与当前视图模型相同。

解决方案是确保Model.AdSummayResults永远不会是null