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

Angular POST请求传值后端Controller接收为null问题求助

解决后端参数listaTeste始终为null的问题

嘿,我来帮你排查下这个问题!后端的listaTeste一直为null,主要是这几个关键地方出错了,咱们一个个来修正:

1. JSONP 不支持 POST 请求

你前端代码里写了dataType: "jsonp",但JSONP的本质是通过动态生成<script>标签发起GET请求,完全不支持POST方法。而你后端标记了[HttpPost],这直接导致请求方式不匹配,后端根本接不到正确的参数。

把dataType: "jsonp"删掉,改用标准的JSON请求:

vm.MostrarDiv = function() { 
  $http({ 
    method: 'POST', 
    url: _obterUrlAPI() + "ImportacaoPreFatura/ValidarLayoutTeste", 
    data: { listaTeste: vm.carregarLayoutTeste } // 这里换成data,不再用params
  }).then(function successCallback(response) { 
    vm.preFatura = response.data; 
  }, function errorCallback(response) { 
    MessageBox("Erro", response.data.Message); 
  }); 
};

2. 参数传递方式错误

你原来用params来传参数,这会把数据拼接到URL的查询字符串里,但对于List<ValidaLayout>这种复杂集合类型,后端很难通过URL查询字符串正确绑定到对象上。应该用data属性把参数放在请求体里,这样ASP.NET才能正确解析。

3. 告诉后端从请求体读取参数

在后端方法的参数上加上[FromBody]特性,明确告诉框架要从请求体里获取这个列表参数:

[HttpPost] 
[Route("ValidarLayoutTeste")] 
public IHttpActionResult ValidarLayoutTeste([FromBody] List<ValidaLayout> listaTeste) {
    // 你的业务逻辑代码
}

最后再检查两个细节

  • 确保前端vm.carregarLayoutTeste的结构和后端ValidaLayout类的属性完全匹配(比如属性名一致,ASP.NET默认会处理JS的小驼峰和C#的大驼峰映射,但最好尽量对齐)。
  • 确认请求的Content-Type是application/json,$http默认会自动设置这个,但如果有全局请求拦截器修改了配置,一定要检查一下。

按照上面的步骤改完,应该就能解决参数为null的问题啦!

内容的提问来源于stack exchange,提问作者Vinicius Cano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:32:56