C# Controller接收jQuery AJAX提交参数为null的问题如何解决
问题原因排查与修复方案
已知错误点
- 前端AJAX配置中
contentType拼写错误:你写的是aplication/json,正确拼写为application/json,该错误会直接导致服务端无法识别请求的内容格式。 - 参数绑定规则不匹配:ASP.NET 默认对
string、int这类简单类型的参数,默认从查询参数、表单数据中取值,你提交的是JSON格式的请求体,系统无法自动将JSON字段绑定到两个独立的string参数上。
修复方案
方案1:使用表单格式提交(改动最小)
不需要修改后端代码,仅调整前端AJAX逻辑,移除JSON序列化和错误的contentType配置即可:
$(document).ready(function () { $(document).on('submit', '#form', function () { var data = { val1: $("#val1").val(), val2: $("#val2").val() }; $.ajax({ type: "POST", url: 'url', data: data, success: function () { alert("It works") }, error: function () { alert("It failed"); } }); return false; }); });
方案2:保留JSON提交,适配后端参数绑定
如果业务要求必须用JSON格式提交,按以下步骤调整:
- 修正前端
contentType拼写为application/json - 后端新增参数接收模型类:
public class CheckFormRequest { public string Val1 { get; set; } public string Val2 { get; set; } }
- 修改Controller方法,添加
[FromBody]特性指定从请求体解析参数:
public IActionResult CheckForm([FromBody] CheckFormRequest request) { // 通过 request.Val1、request.Val2 取值即可 //Do stuff }
内容的提问来源于stack exchange,提问作者Dominik Willaford
相关产品推荐
相关产品推荐

