我正在尝试将字符串数组传递给Web Api方法,该方法接受一个字符串数组作为参数。 Bellow my Web Api方法
[HttpGet]
public string HireRocco(string[] hitList)
{
string updateList = string.Empty;
return updateList;
}
我的ajax
var uri = 'http://localhost:16629/api/AssassinApi/HireRocco',
hitList = ['me', 'yourself'];
$.ajax({
url: uri,
type: 'GET',
data: { hitList : hitList },
cache: false,
dataType: 'json',
async: true,
contentType: false,
processData: false,
success: function (data) {
},
error: function (data) {
}
});
上面的ajax成功点击了HireRocco
方法,但hitList
param仍为null。我应该更改什么来传递一个字符串数组作为参数。
答案 0 :(得分:3)
如果您需要通过HttpGet
发送数据,可以添加[FromUri]
,您可以按照以下方式编辑控制器操作,并且您的JavaScript应该按原样运行:
[HttpGet]
public string HireRocco([FromUri] string[] hitList)
{
string updateList = string.Empty;
return updateList;
}
答案 1 :(得分:0)
删除contentType: false
,然后将processData
设置为true,这样它就可以将postData附加到您的网址,因为这是get请求的工作方式,或者您必须更改api以接受通过设置的POST请求标题。
$.ajax({
url: uri,
type: 'GET',
data: { hitList : hitList },
cache: false,
dataType: 'json',
async: true,
processData: true,
success: function (data) {
console.log(data);
},
error: function (data) {
}
});
答案 2 :(得分:0)
首先,我建议你使用POST而不是GET。 创建一个javascript数组。推送其中的数据。使用JSON.Stringify将其发送到web api操作方法,然后处理进一步的逻辑。
在web api中创建一个模型变量..并创建一个列表对象..
以下是代码..
的Javascript
var demoarray=[];
demoarray.push({"test1":"hi", "test2":"hello"}); //test1 and test2 are model variable names in web api and hi and hello are their values
你可以在for循环中重复这个过程,或者添加多个值。
$.ajax({
url:"http://localhost..",
type: "POST",
data: JSON.Stringify(demoarray),
contentType: "application/json",
success: function(data)
{
},
error: function(data)
{
}
});
WEB API代码 创建一个模型类和两个属性
public string test1 {get; set;}
public string test2 {get; set;}
控制器代码
[Httppost]
public void actionmethod(List<modelclass> obj)
{
int i=0;
for(i=0; i<obj.count; i++)
{
//your logic
}
}