You need to enable JavaScript to run this app. C# MVC传递List<GetInvoice>模型出现类型不匹配错误求助
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:18:03