将空数组发送到webapi

Lea*_*Dev 7 javascript c# asp.net jquery asp.net-web-api

我想将一个空的javascript数组POST []到webAPI并让它创建一个空的整数列表.我也想要它,所以如果我将javascript发布null到webAPI,它将null分配给整数列表.

JS:

var intArray = [];
$.ajax({
    type: 'POST',
    url: '/api/ListOfInts',
    data: {'' : intArray},
    dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)

c#webapi

[HttpPost]
public void ListOfInts([FromBody]List<int> input)
Run Code Online (Sandbox Code Playgroud)

问题1)Jquery拒绝发送数据{'' : []}作为后有效负载.只要我在数组中添加一些内容就可以了{'' : [1,2,3]}

问题2)将 空的js数组传递给控制器​​会给出null基于我读到的内容,即使我将它发布为空数组,它也会将列表初始化为null.讨论的解决方案有它,所以列表总是初始化为空,但我不希望这样.我希望它在某些情况下为null(当发送null/undefined时),并且在[]发送时它应该初始化为空.

编辑:请参阅https://www.asp.net/web-api/overview/advanced/sending-html-form-data-part-1,了解我使用的原因{'' : []}

tmg*_*tmg 23

使用JSON.stringify(intArray)contentType: 'application/json'为我工作:

$.ajax({
     url: "/api/values",
     method: "POST",
     contentType: 'application/json',
     data: JSON.stringify([])
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

$.ajax({
     url: "/api/values",
     method: "POST",
     contentType: 'application/json',
     data: null
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

$.ajax({
      url: "/api/values",
      method: "POST",
      contentType: 'application/json',
      data: JSON.stringify([1, 2, 3])
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Jer*_*her 2

data: {'' : intArray},
Run Code Online (Sandbox Code Playgroud)

JSON 中不允许使用空白键名称。

只需发送数组本身。

data: intArray,
Run Code Online (Sandbox Code Playgroud)