AJAX将字符串数组发布到Webapi 2

时间:2018-10-25 18:36:58

标签: c# ajax asp.net-web-api asp.net-web-api2

这是我的ajax调用:

var myIds = ["A","B","C"]
$.ajax({
    type: "POST",
    url: /DoStuffAndThings?year=2018&name=test,
    data: {myIds: myIds},
    traditional: false
});

这是我的控制器动作:

[HttpPost]
public void DoStuffAndThings(int year, string name, [FromBody] List<string> myIds) {
    // do stuff
}

年份和名称没有问题,但myIds始终为空。

我尝试过

data: {myIds: myIds}data: myIdsdata: {"": myIds},我尝试使用Ienumerable<string>List<string>string[]

而且我尝试过传统:对与错

2 个答案:

答案 0 :(得分:1)

模型绑定程序无法解析发送数据,因为它不知道格式

使用JSON.stringify以及相应的参数

var myIds = ["A","B","C"];
$.ajax({
    type: "POST",
    url: "/DoStuffAndThings?year=2018&name=test",
    contentType: "application/json",
    dataType: "json",
    data:JSON.stringify(myIds),
    traditional: false
});

然后,模型绑定程序应该能够识别请求正文中的字符串集合。

答案 1 :(得分:0)

将数据发送到Web服务器时,数据必须是字符串。 使用JSON.stringify()将JavaScript对象转换为字符串。

在输入数据之前,请使用JSON.stringify(myIds)

 var myIds = ["A","B","C"]
  $.ajax({
       type: "POST",
       contentType: "application/json",
       dataType: 'json',
       url: /DoStuffAndThings?year=2018&name=test,
       data: JSON.stringify(myIds),
       traditional: false
 });