使用fetch()发布数据时为空

简·特林达尔

这是被调用的控制器,但value总是以null结尾:

 public void Post([FromBody]string value) {
 }

这就是它的调用方式:

function () {
    var data = {
        'sku': $('#radioProduct').val(),
        'qty': $('#productQty').val()
    }
    return fetch('/api/Default', {
         method: 'post',
         headers: {
              'content-type': 'application/json'
         },
         body: JSON.stringify(data)
         }).then(function (res) {
             return res.json();
         }).then(function (data) {
             return data.orderID; // Use the same key name for order ID on the client and server
         });
   }
});

我在这里做错什么吗?该API确实会被调用,但主体为空。

约翰·H

这是null因为您要发布以下JSON:

{
    "sku": "sku's value",
    "qty": 1
}

但您的控制器期望一个string实际上,您已将指定application/jsonContent-Type,而您需要做的是创建一个类,该类对您希望收到的两个值进行建模:

public class ProductInfo
{
    public string Sku { get; set; }
    public int Qty { get; set; }
}

否则,模型绑定器将不知道如何将值skuqty任何事物关联,因此您得到null

最后,将操作更改为:

public void Post([FromBody]ProductInfo productInfo)

模型绑定完全由约定处理,这意味着将属性名称或原始值与您发送给控制器的JSON或其他数据相关联。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章