You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC读取TempData出现List转实体类型转换错误如何解决

问题原因

错误信息已经明确说明类型不匹配:你存入TempData["PreApproved"]的数据类型是List<Asp_PASMVC.Models.ApprovalParty>(ApprovalParty的泛型集合),但读取时尝试强制转换为单个Asp_PASMVC.Models.ApprovalParty对象,二者类型不一致因此抛出转换异常。

解决方法

根据你的实际业务需求二选一即可:

场景1:你需要存入/读取的是单个ApprovalParty对象

回到控制器的赋值逻辑,修改TempData["PreApproved"]的赋值代码,从集合中取出单个元素再存入:

// 示例:取集合第一个元素,可根据你的业务逻辑调整取值规则,注意空值判断
TempData["PreApproved"] = PreApproved.FirstOrDefault();

原有视图的读取代码无需改动。

场景2:你需要存入/读取的是ApprovalParty集合

修改视图中的读取代码,转换为对应的集合类型即可:

List<Asp_PASMVC.Models.ApprovalParty> PreApprovedDetails = (List<Asp_PASMVC.Models.ApprovalParty>)TempData.Peek("PreApproved");

补充建议

为了避免这类类型转换异常,可以在读取前先做类型校验:

// 先判断类型再转换,避免直接抛出异常
if (TempData.Peek("PreApproved") is List<Asp_PASMVC.Models.ApprovalParty> preApprovedList)
{
    // 业务逻辑处理preApprovedList
}
else if(TempData.Peek("PreApproved") is Asp_PASMVC.Models.ApprovalParty singleApproved)
{
    // 业务逻辑处理singleApproved
}

内容的提问来源于stack exchange,提问作者smc develpments

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:54:04