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

ASP.NET Core 2.0中.ajax()数据参数无法传递至C#控制器函数问题

ASP.NET Core 2.0 Ajax传参控制器接收为Null的问题解决

我之前也碰到过一模一样的情况,ASP.NET Core的模型绑定逻辑和MVC5确实有不少差异,这就是你参数一直为null的核心原因。咱们一步步拆解来看:

问题根源

你前端设置了contentType: "application/json; charset=utf-8",也就是把请求体以JSON格式发送,但ASP.NET Core默认不会自动将JSON格式的请求体绑定到**简单类型(比如string、int)**的控制器参数上。而MVC5的绑定逻辑相对宽松,会自动处理这种场景,所以之前在MVC5里能正常运行。

两种有效解决办法

办法一:给控制器参数添加[FromBody]特性

直接修改控制器方法,给参数加上[FromBody]特性,明确告诉ASP.NET Core要从请求体里读取这个参数:

public string UpdateBulkStatus([FromBody] string idChecked)
{
    return "abc";
}

这种方式下,你现有的前端代码完全不用改动,就能正常接收到参数值了。

办法二:调整Ajax的参数传递格式

如果不想修改控制器代码,可以把Ajax的请求格式改成表单提交的默认格式——去掉contentType设置(jQuery Ajax默认就是application/x-www-form-urlencoded),同时data直接传键值对而不是JSON字符串:

var idChecked = 5;
$.ajax({
    type: "POST",
    url: "/BlogCategory/UpdateBulkStatus",
    data: { idChecked: idChecked },
    dataType: "html",
    success: function (msg) { },
    error: function (req, status, error) { }
});

这种方式下,控制器的参数不需要加任何特性,就能自动绑定到传递的值。

额外小提醒

如果之后你要传递复杂对象(比如自定义的实体类),ASP.NET Core默认会从请求体绑定JSON格式的参数,这时候反而不需要额外加特性,框架会自动处理。但简单类型必须明确指定[FromBody]或者用表单格式传递,这点和MVC5的区别一定要记牢哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:36:35