ajax post在webapi中传递null参数

时间:2015-03-27 12:20:00

标签: javascript asp.net-web-api

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

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

但这些都没有帮助。

当ajax帖子发生时,它会命中web api动作,但参数为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
    });
};

2 个答案:

答案 0 :(得分:0)

在以下stackoverflow question

上找到答案

我需要使用

JSON.stringify(denomination)

答案 1 :(得分:0)

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

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