ajax post 在webapi中传递空参数

ajax post passes null parameter in webapi

这个问题之前有人提出过,通常的答案好像是:

但这些都没有帮助。

当ajaxpost发生时,命中了webapi动作,但是参数为null

我有以下服务器端代码

[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
    });
};

在下面找到答案Whosebug question

我需要使用

JSON.stringify(denomination)

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

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