2013-02-25 119 views
1

我有一個基本的HTML,它使用jquery ajax調用來調用WebAPI函數。 HTML發送一個對象數組,該對象應映射到我作爲LIST接收的函數參數。如果我刪除數組並只發送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 [],而不是一個列表。 – 2013-02-25 16:23:59

+0

@KevinJunghans沒有工作。 – nido 2013-02-25 17:39:11

回答

3

當我開始知道Web-API當前不允許超過1個複雜參數,因此我通過以下解決方法完成了我的工作。讓我知道是否有人有更好的解決方案:

更改Web-API函數以接收JObject,然後從中提取我的Complex對象。網絡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中,開箱即可只有1個複雜類型輸入參數。

相關問題