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

AngularJS向.NET Controller发送POST请求时参数对象值全为空

AngularJS POST到.NET控制器参数为空问题解决

问题现象

前端AngularJS构造的过滤参数对象Filtro数据正常,但后端.NET控制器接收的FiltroUsuarios对象所有属性值均为空。

核心解决步骤

1. 为控制器参数添加[FromBody]特性

ASP.NET MVC中,POST请求的复杂类型参数需要通过[FromBody]特性指定从请求体绑定数据,否则默认无法正确解析JSON格式的请求内容。

修改后的C#控制器代码:

[HttpPost]
public ActionResult GetUsuariosFilter([FromBody] FiltroUsuarios Filtro)
{
    try
    {
        var response = _server.GetUsuarios();
        if (response == null) throw new Exception("Error.");
        return Json(response);
    }
    catch (Exception e)
    {
        return Json(new ResponseRequest() { 
            Success = false, 
            Message = e.Message, 
            MessageDetail = (e.InnerException != null ? e.InnerException.Message : "") 
        });
    }
}

2. 确保FiltroUsuarios类属性匹配且可访问

后端FiltroUsuarios类的属性名称需与前端Filtro对象的属性完全对应,且必须是public修饰、包含get/set访问器的属性,否则模型绑定无法赋值。

示例FiltroUsuarios类定义:

public class FiltroUsuarios
{
    public string Usuario { get; set; }
    public string Nombre { get; set; }
    public string Rfid { get; set; }
    public int CurrentPage { get; set; }
}

3. 前端避免手动序列化JSON(可选但推荐)

AngularJS的$http服务会自动将JavaScript对象序列化为JSON字符串,无需手动调用JSON.stringify,手动序列化可能导致格式解析问题。

修改AngularJS控制器中的GetUsuariosFilter函数:

function GetUsuariosFilter(filtro) {
    return appService.POST(filtro, "/Usuarios/GetUsuariosFilter");
}

同时调整services.js中的POST方法,空数据时传入空对象而非空字符串:

this.POST = function (data, url) {
    var deferred = $q.defer();
    if (data == null || data == undefined) data = {};
    var promise = $http({
        method: 'POST',
        url: url,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: data
    }).then(function (response) {
        deferred.resolve(response);
    }).catch(function (error) {
        if (error.status == -1) {
            alert('Se produjo un error al conectar con el servidor');
        }
        deferred.reject(error);
    });
    return deferred.promise;
}

验证要点

  • 用浏览器开发者工具查看Network标签,确认POST请求的Request Body中包含正确的JSON数据
  • 检查后端FiltroUsuarios类的属性是否与前端参数名称完全对应(大小写不敏感,但建议保持一致避免问题)

内容的提问来源于stack exchange,提问作者Milagros Ramos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:53:15