我有一个基本的HTML,它使用jquery ajax调用来调用WebAPI函数。 HTML发送一个对象数组,这些对象应该映射到我作为LIST接收的函数参数。如果我删除数组并只发送一个对象,并从函数中删除列表,那么我的代码工作,对象成功传递给参数。
JavaScript代码如下
function Call_Service () {
var input =
{
STATUS: "MY New Status",
CATEGORY: "My Value"
};
var input2 =
{
STATUS: "MY New Status2",
CATEGORY: "My Value2"
};
var input_array = new Array();
input_array[0] = input;
input_array[1] = input2;
$.ajax({
type: "POST",
url: "http://localhost:34989/api/TMSPortal/objectPOC",
data: input_array,
success: function (response) {
alert(response);
}
});
}
C#WebAPI如下
public Int64 objectPOC(List<TMS_STATUS> _Status)
{
Int64 retValu = 0;
for (int i = 0; i < _Status.Count; i++)
{
retValu++;
}
return retValu;
}
答案 0 :(得分:3)
当我开始知道Web-API目前不允许超过1个复杂参数时,因此我通过以下解决方法完成了我的工作。如果有人有更好的解决方案,请告诉我:
更改Web-API函数以接收JObject,然后从中提取我的Complex对象。 Web-API函数如下所示:
public Int64 objectPOC(JObject jsonWrapper)
{
dynamic jsonValues = jsonWrapper;
JArray jsonInput = jsonValues.input;
JArray jsonInput2 = jsonValues.input2;
List<TMS_STATUS> _Status = jsonInput.ToObject<List<TMS_STATUS>>();
List<TMS_STATUS> _Status2 = jsonInput2.ToObject<List<TMS_STATUS>>();
Int64 retValu = 0;
for (int i = 0; i < _Status.Count; i++)
{
retValu++;
}
return retValu;
}
Ajax Call如下:
function Call_Service () {
var input =
{
STATUS: "MY New Status",
CATEGORY: "My Value"
};
var input2 =
{
STATUS: "MY New Status2",
CATEGORY: "My Value2"
};
var input_array = new Array();
input_array[0] = input;
input_array[1] = input2;
alert(input_array[0].STATUS);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://localhost:34989/api/TMSPortal/objectPOC",
dataType: "json",
data: JSON.stringify({
input: input_array,
input2: input_array
}),
success: function (response) {
alert(response);
}
});
}
答案 1 :(得分:0)
要发送多个复杂类型参数,请创建模型并将其作为模型内的属性公开。在Web API中,您只能拥有一个开箱即用的复杂类型输入参数。