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

AJAX调用MVC Action时object类型id参数接收异常的解决方法

参数绑定异常:Action方法中id参数无法解析为int类型的解决办法

问题场景

后端Action方法定义:

public JsonResult DeleteRecord(string tableName, string fieldName, object id, string configs, string extenderName = null){}

前端AJAX调用代码:

var jqxhr = $.ajax({
        type: "get",
        url: "/Dynamic/DeleteRecord?tableName=" + tableName + "&id=" + id + "&fieldName=" + colName + "&extenderName=" + extndname
    })
    .done(function(data) {
        //console.log(data);
        if (data.Success == true) {
          
        } else {
    
        }
    })
    .fail(function(XMLHttpRequest, textStatus, errorThrown) {
    })
    .always(function() {});

问题:后端能接收其他所有参数,但id参数无法被解析为int类型,显示为{object}。

解决办法

1. 直接指定Action参数类型为int

既然id实际是整数类型,无需用object作为参数类型,直接改为int id:

public JsonResult DeleteRecord(string tableName, string fieldName, int id, string configs, string extenderName = null){}

ASP.NET模型绑定器会自动将URL中传递的数字字符串解析为int类型,无需额外处理。

2. 若必须保留object类型,手动转换参数

如果因业务需求必须保留object参数类型,可在Action内部手动转换为int:

public JsonResult DeleteRecord(string tableName, string fieldName, object id, string configs, string extenderName = null)
{
    // 尝试将object转换为int
    if (int.TryParse(id.ToString(), out int intId))
    {
        // 使用intId执行后续删除逻辑
    }
    else
    {
        // 返回格式错误提示
        return Json(new { Success = false, Message = "无效的ID格式" });
    }
}

3. 前端确保传递纯数字字符串

检查前端id变量类型,避免传递对象类型值。拼接URL前可强制转为字符串:

url: "/Dynamic/DeleteRecord?tableName=" + tableName + "&id=" + String(id) + "&fieldName=" + colName + "&extenderName=" + extndname

内容的提问来源于stack exchange,提问作者Faizan Naeem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:45:45