ASP.NET Core MVC中Ajax传递string[]到C#控制器失败求助
解决ASP.NET Core MVC POST JSON数组报400错误的问题
后端正确写法
直接给参数加上[FromBody]特性,并且指定明确的集合类型,别用object:
[HttpPost] public IActionResult Register([FromBody] List<string> currentSelection) // 换成 string[] currentSelection 也可以 { // 编写你的业务逻辑 return Ok(); }
前端确认要点
你的AJAX代码已经踩中关键步骤,再核对这两点:
- 必须保留
contentType: "application/json; charset=utf-8",明确告诉后端接收的是JSON格式数据 data直接用JSON.stringify(currentSelection),不要额外包装成{currentSelection: ...}这类带键的对象,因为后端[FromBody]要接收的是纯数组
避坑提醒
- 不要加
traditional: true,这个配置是给传统表单提交数组用的,和JSON格式不兼容 - 之前用
object作为参数类型不可行,ASP.NET Core无法自动将JSON数组绑定到object上,必须指定具体的List<string>或string[]类型
最后验证
打开浏览器F12的Network面板,检查POST请求:
- 请求头里的
Content-Type是否为application/json; charset=utf-8 - 请求体是否是纯数组格式
["Name1","Name2"],没有多余的键名包裹
如果还是有问题,检查项目的Startup/Program.cs里是否正确配置了MVC服务,默认builder.Services.AddControllersWithViews()已经包含JSON序列化支持,除非你手动修改过相关配置。
内容的提问来源于stack exchange,提问作者guidempty
相关产品推荐
相关产品推荐

