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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 10:29:30