C# Web API接收前端JSON数组时[FromBody]参数为null如何解决
问题原因排查
- 类型不匹配:前端提交的
myJson是包含多个EquiposTorneo结构的数组,但后端接口[FromBody]绑定的是单个EquiposTorneo对象,类型完全不对应,模型绑定失败自然返回null。 - 额外包装了请求体:使用axios提交时,你把数据又套了一层
{myJson: xxx}的对象,相当于最终请求体的结构是{"myJson": [{"id_torneo":1,...},...]},和后端期望的结构完全不一致。 - 多余的JSON序列化:axios默认会自动把提交的JS对象序列化为JSON,手动调用
JSON.stringify反而会把数组转成纯字符串,后端无法正确反序列化为对象集合。
解决方案
前端修改
删除多余的序列化操作和外层包装,直接提交数组即可:
registrar () { const params = this.rowData axios.post(url + 'Torneo/AddEquipos', params) .then((response) => { console.log(response) }) }
后端修改
把接口接收的参数类型从单个EquiposTorneo改为集合类型即可:
[HttpPost] [Route("api/Torneo/AddEquipos")] public JsonResult InsertTorneoEquipos([FromBody]List<EquiposTorneo> myJson) { return new JsonResult("OK"); }
如果你坚持要保留前端
{myJson: 数组}的提交结构,需要新增一个包裹类作为参数类型:public class EquiposTorneoRequest { public List<EquiposTorneo> myJson { get; set; } } // 接口对应修改为 public JsonResult InsertTorneoEquipos([FromBody]EquiposTorneoRequest request)
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

