2013-02-25 6 views
1

У меня есть базовый HTML-код, который вызывает функцию WebAPI с использованием jQuery ajax-вызова. HTML отправляет массив объектов, которые должны быть сопоставлены с параметром функций, который я получаю как СПИСОК. Если я удаляю массив и отправляю только 1 объект, а также удаляю список из функции, то мой код работает, и объект успешно передается параметру.Как передать массив объектов в список webAPI

код 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

Попробуйте изменить objectPOC параметр метода для TMS_STATUS [] вместо списка. –

+0

@ KevinJunghans, который не работал. – nido

ответ

3

Поскольку я узнал, что веб-API в настоящее время не позволяет более одного сложного параметра, поэтому я выполнил свою работу с помощью следующего обходного пути. Дайте мне знать, если у кого-то есть лучшее решение:

Изменена функция Web-API для приема JObject, а затем извлечена из нее мои сложные объекты. Функции 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 вызова выглядит следующим образом:

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); 
    } 
}); 
} 
0

Чтобы отправить несколько сложных параметров типа, создать модель и выставить их в качестве свойств внутри модели. В Web API вы можете иметь только один входной параметр сложного типа из коробки.

Смежные вопросы