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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:44:57