C# 如何将json对象数组发布到web api

C# 如何将json对象数组发布到web api,c#,jquery,asp.net,json,asp.net-web-api,C#,Jquery,Asp.net,Json,Asp.net Web Api,如何将JSON数组发布到Web API?它对单个对象有效 这是我尝试过的,但是控制器似乎返回了0,而不是预期的3 这是我的JSON: var sc = [{ "ID": "5", "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a", "Table_ID": "Allergy_Trns", "Checksum": "-47509053

如何将JSON数组发布到Web API?它对单个对象有效

这是我尝试过的,但是控制器似乎返回了
0
,而不是预期的
3

这是我的JSON:

var sc = [{
              "ID": "5",
              "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
              "Table_ID": "Allergy_Trns",
              "Checksum": "-475090533",
              "LastModified": "2015-01-22T20:08:52.013"
          },
          {
              "ID": "5",
              "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
              "Table_ID": "Allergy_Trns",
              "Checksum": "-475090533",
              "LastModified": "2015-01-22T20:08:52.013"
          },
          {
              "ID": "5",
              "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
              "Table_ID": "Allergy_Trns",
              "Checksum": "-475090533",
              "LastModified": "2015-01-22T20:08:52.013"
          }];           
AJAX调用:

$.ajax({
           url: urlString,
           type: 'POST',
           data: sc,
           dataType: 'json',
           crossDomain: true,
           cache: false,
           success: function (data) { console.log(data); }
        });
Web API控制器:

[HttpPost]
public string PostProducts([FromBody]List<SyncingControl> persons)
{
    return persons.Count.ToString(); // 0, expected 3
}
[HttpPost]
公共字符串后期产品([FromBody]列出人员)
{
return persons.Count.ToString();//0,应为3
}

json
表ID中有一个错误:“过敏”应为
“表ID”:“过敏”

缺少双引号

更新

您需要确保以json格式发送参数,如下所示:

 $.ajax({
        url: urlString,
        type: 'POST',
        data: JSON.stringify(sc),
        dataType: 'json',
        contentType: 'application/json',
        crossDomain: true,
        cache: false,
        success: function (data) { console.log(data); }
    });
请注意
JSON.stringify(sc)
,@herbi在指定内容类型方面也是部分正确的

屏幕抓取


您必须将content-type头添加到ajax请求中,以便WebAPI能够理解请求并使用正确的格式化程序来反序列化数据:

$.ajax({
url:urlString,
键入:“POST”,
数据:sc,
数据类型:“json”,
contentType:“应用程序/json”,
跨域:是的,
cache:false,
成功:函数(数据){console.log(数据);}

});
您可以在发送前将内容类型设置为,这将确保json数据与服务器对象匹配

$.ajax({
发送前:函数(xhr){
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
},
url:urlString,
键入:“POST”,
数据:sc,
数据类型:“json”,
contentType:“应用程序/json”,
跨域:是的,
cache:false,
成功:函数(数据){console.log(数据);}
});

我不认为是这样,但您是否尝试过在浏览器中使用开发工具来确认负载是否已发送?我对Web API一无所知,因此这可能不是最可能的原因,但我可以想象在请求触发之前,客户端将
sc
设置为
null
,这似乎是错误的喜欢它能做到这一点。浏览器控制台中有错误吗?您在sc中的第一人称对象中缺少双引号。控制台上没有任何错误Hutchonoid:这里没有,不是在我的代码中。对不起,它是“contentType”,不是“content Type”