ASP.NET Core展示复杂类数据时模型类型不匹配如何解决
错误根因
你的ASP.NET Core程序报错的核心原因是Action返回的模型类型与视图声明的接收模型类型不匹配:
你当前在Privacy方法中给视图返回的是单个EnergaticWebApp.Models.MyModel类型的对象,但对应的Privacy.cshtml视图顶部声明的模型接收类型为List<EnergaticWebApp.Models.MyModel>,类型不一致触发了运行时异常。
可行解决方法
根据你的业务需求二选一即可:
方案1:修改视图的模型声明(适合只需要展示单条
MyModel数据的场景)
打开Views文件夹下对应Privacy.cshtml文件,把顶部的@model声明改为:@model EnergaticWebApp.Models.MyModel改完后和你Action返回的单个对象类型完全匹配,直接就能正常运行。
方案2:修改Action的返回值(适合视图确实需要接收
MyModel集合的场景)
把你Privacy方法中返回视图的代码,把单个jsonModel包装成列表再传递,修改后代码如下:// 把单个对象包装为List<MyModel>集合后再传给视图 return View(new List<MyModel> { jsonModel });
额外优化建议
可以给反序列化的结果增加空值判断,避免json文件内容异常导致jsonModel为null,后续视图访问属性时触发空引用异常:
var jsonModel = JsonSerializer.Deserialize<MyModel>(jsonString, options) ?? new MyModel();
内容的提问来源于stack exchange,提问作者Asad Malikz
相关产品推荐
相关产品推荐

