ASP.NET Core MVC中System.Int16转System.Int32类型转换失败问题求助
ASP.NET Core MVC中System.Int16转System.Int32类型转换失败问题求助
大家好,我最近在做ASP.NET Core MVC项目时遇到了一个头疼的类型转换问题,折腾了好一阵没找到原因,想请各位帮忙分析下。
我的场景是这样的:有一个视图负责搜索SQL数据库并展示结果,点击结果里的编辑链接,本该跳转到信息更新页面,但现在直接抛出了这个错误:
Unable to cast object of type 'System.Int16' to type 'System.Int32'.
我已经尝试过更换存储过程,但问题依旧;而且我的代码里根本没用到GetInt32方法。存储过程里的参数是RQKey,我特意确认过它的类型就是int(既不是bigint也不是smallint),按理说不需要做类型转换啊,实在搞不懂为啥会触发这个错误,求各位大佬支招!
下面是我Controller里的相关代码:
public IActionResult Update(int id) { Request reqs = new Request(); try { reqs = GetRequest(id); } catch (Exception ex) { throw ex; } return View(reqs); } public IActionResult UpdateRequests(Request updatereq) { string ConnectionString = connectionStrings.Get("EquipmentConnectString"); var objConnect = new SqlConnection(ConnectionString); // 后续存储过程调用代码未完全粘贴 }
目前我自己想到几个可能的排查方向,但还没完全验证:
- 会不会是
GetRequest方法读取数据库时,结果集中某个字段实际是SQL的smallint类型(对应.NET的Int16),但我的Request实体类里对应的属性定义成了int(Int32)? - 存储过程返回的其他字段有没有类型不匹配的情况?
- 编辑链接传递id参数的时候,有没有可能传递的是smallint类型的值,导致Action绑定int参数时出问题?
备注:内容来源于stack exchange,提问作者mag232913
相关产品推荐
相关产品推荐

