根据微软的documention,我应该能够在调用@ Html.DisplayFor时将匿名类型的对象作为additionalViewData传递;但是,当我这样做时,我会收到一个黄色屏幕,上面写着:
传递到字典中的模型项是类型的 &#39; System.Collections.Generic.List&#39; 1 [Surveys2.Models.ReportingSidebarItemViewModel]&#39;,但这个字典需要一个类型&#39; Surveys2.Models.ReportingSidebarItemViewModel&#39;。< / p>
以下是我观点的一部分:
@model Surveys2.Models.ReportingPageViewModel
@Html.DisplayFor(m => m.Pages, "ReportingSidebarItemViewModel", new { PageType = Model.PageType } )
这是我的控制器动作:
public ActionResult Summary(string projectCode)
{
ReportingPageViewModel reportingPageViewModel = GetReportingPageViewModel(new ReportingPageParams { ProjectCode = projectCode });
return View("Page", reportingPageViewModel);
}
答案 0 :(得分:1)
这里的问题是您使用DisplayFor的第二个参数来定位显示页面。当您在没有目标视图的情况下调用displayfor(m =&gt; m.prop)时,ViewEngineCollection将查找最适合的diplay页面。当最适合的显示页面仅用于单个项目并且您传递了一个列表时,它将为您迭代。目标显示假设您传递的是您要定位的页面的确切类型,因此会中断。
编辑 - 有趣的是MSDN文档除了DisplayFor(m =&gt; m.prop)方法之外没有谈论循环