JavaScript字符串数组无法传递至ASP.NET Core控制器方法问题
解决JavaScript数组无法传递到ASP.NET Core控制器的问题
问题原因
ASP.NET Core默认不会自动将请求体中的JSON数组绑定到List<string>参数,需要显式指定使用请求体绑定,同时要确保请求格式匹配框架的解析规则。
修复步骤
1. 修改控制器方法,添加[FromBody]特性
在控制器的参数前加上[FromBody],明确告知框架从请求体中读取数据并绑定到该参数:
[HttpPost] public IActionResult ReinstateEmployeeUpdate([FromBody] List<string> employeeIds) { return View(); }
2. 优化前端AJAX请求(可选但推荐)
你的前端代码中重复设置了contentType,可以合并为一处避免冗余,不影响功能但代码更简洁:
function UpdateEmployee() { var employeeIds = ["346", "347"]; $.ajax({ type: "POST", contentType: "application/json", url: "/Employee/ReinstateEmployeeUpdate", dataType: "json", data: JSON.stringify(employeeIds), success: function (response) { console.log(response); }, error: function (response) { console.log(response.responseText); } }); }
原理说明
[FromBody]是ASP.NET Core模型绑定的核心标识,它指示框架从HTTP请求的Body部分读取数据,而非URL查询字符串或表单数据。- 前端通过
JSON.stringify()将数组转为标准JSON字符串,配合contentType: "application/json",确保请求体格式完全符合后端的解析要求。
内容的提问来源于stack exchange,提问作者Alevel
相关产品推荐
相关产品推荐

