ASP.NET Core 6 MVC中Ajax传参至Controller方法时对象为null的问题
错误原因及修复方案
多余字段导致模型绑定失败:Ajax请求中传递了
Val6字段,但TableData实体类并未定义该属性。ASP.NET Core的模型绑定默认启用严格匹配,多余字段会触发绑定失败,导致参数对象为null。
修复:删除Ajax代码中"Val6": $('#v6').val(),这一行,确保传递的字段与实体类属性完全匹配。Controller返回语句语法错误:Controller方法中
return Json(var);存在语法问题,var是C#关键字,不能直接作为参数传入Json()方法,这会引发编译错误,影响请求正常响应。
修复:将返回语句改为return Json(result);,正确返回数据库操作结果。额外检查项:
- 确认Controller名称为
DataInsertionController,确保URL路径DataInsertion/Insert_data路由匹配正确; - 检查页面中输入框的ID
v1至v5是否存在且拼写正确,避免传递未定义的字段值; - 可在Controller方法中添加调试输出(如
Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(_data));),查看请求的JSON内容是否符合预期。
- 确认Controller名称为
修复后的代码示例
修复后的Ajax代码
function InsertDATA() { var _data = { "Val1": $('#v1').val(), "Val2": $('#v2').val(), "Val3": $('#v3').val(), "Val4": $('#v4').val(), "Val5": $('#v5').val() }; $.ajax({ type: 'POST', url: 'DataInsertion/Insert_data', data: JSON.stringify(_data), contentType: 'application/json', dataType: "JSON", success: function(r) { console.log("RESULT", r); }, error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); alert(err.Message); } }); }
修复后的Controller方法
[HttpPost] public IActionResult Insert_data([FromBody] TableData _data) { var result = DB.Insert(_data); return Json(result); }
内容的提问来源于stack exchange,提问作者mohamed souilmi
相关产品推荐
相关产品推荐

