ajax post在webapi中传递null参数

ajax post passes null parameter in webapi

本文关键字:null 参数 post webapi ajax      更新时间:2023-09-26

这是一个以前出现过的问题,通常的答案似乎是:

  • 将[FromBody]添加到参数
  • 在帖子中添加application/json的内容类型

但这两者都无济于事。

当ajax帖子发生时,它会点击webapi操作,但参数为空

我有以下服务器端代码

[HttpPost]
    [Route("SafeFloatTopUp")]
    public void SafeFloatTopUp([FromBody] SafeFloatDenomination d )
    {
        //d is null
    }

 public class SafeFloatDenomination
{
    public SafeFloatDenomination();
    public string Denomination { get; set; }
    public decimal Value { get; set; }
}

这是从以下客户端代码调用的:

  var d =  { Denomination: "1p", Value:  2 };
            bankingApi.client.topUp(d);
var topUp = function (denomination) {
    $.ajax({
        url: '/portalframework/BackOffice/Banking/Banking/SafeFloatTopup',
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: denomination
    });
};

找到以下stackoverflow问题的答案

我需要使用

JSON.stringify(denomination)

您不需要指定内容类型-默认的内容类型为'application/x-www-form-urlencoded;charset=UTF-8'将处理javascript对象,而无需将其转换为字符串:

$.ajax({
    url: '/portalframework/BackOffice/Banking/Banking/SafeFloatTopup',
    type: 'POST',
    data: denomination
});