C# MVC传递List<GetInvoice>模型出现类型不匹配错误求助
问题根因
错误信息直接指向模型类型不匹配:你从控制器传递的是List<DB_Payment.Models.GetInvoice>集合类型,但目标视图要求接收的是单个DB_Payment.Models.GetInvoice实体类型。
你贴出的视图声明为@model IEnumerable<DB_Payment.Models.GetInvoice>,List<T>本身实现了IEnumerable<T>接口,理论上是兼容的,因此出现报错只有两种场景:
- 控制器
return View(Items)命中的不是你贴出的这版视图,控制器方法对应路径下的视图头部声明的是单个GetInvoice类型 - 你当前视图内调用了分部视图,给分部视图传参时直接传递了整个集合,而分部视图要求接收单个
GetInvoice实体
解决方案
场景1:控制器命中的视图声明错误
首先确认控制器方法对应的视图文件路径是否正确,找到实际加载的视图文件,按你的业务需求二选一修改:
- 如果你需要展示列表,把视图头部的模型声明修改为集合类型:
@model IEnumerable<DB_Payment.Models.GetInvoice>
- 如果你需要展示单条数据,修改控制器返回逻辑,返回单个实体即可:
// 控制器return逻辑修改为 return View(Items.FirstOrDefault());
场景2:分部视图传参错误
检查视图内所有调用分部视图的代码,确认分部视图的模型要求,如果分部视图要求接收单个GetInvoice,需要遍历集合逐个传参:
@foreach(var invoice in Model) { @Html.Partial("你的分部视图名称", invoice) }
补充:你当前视图代码中同时初始化了
WebGrid实例又使用了GridMvc的@Html.Grid组件,属于冗余代码,不需要使用的可以直接删除,不影响功能运行。
内容的提问来源于stack exchange,提问作者vinisha9
相关产品推荐
相关产品推荐

