2016-08-12 60 views
-1

我有一個網頁將數據發佈到Web API。 ajax函數如下。發佈JSON數據到Web API的問題

var jsondata = { "comparisionCalculatorReq": { "transactionType": "None", "fundName": "Myfund", "annualizedReturn": "10", "frequency": "Monthly"} }; 

$.ajax({ 
type: "POST", 
url: "http://localhost:1101/Mypost/PostDataAPI", 
dataType: 'json', 
data: jsondata 
}).done(function (msg) { 
alert(msg); 
}); 

在我的Web API控制器我有一個方法如下

[ActionName("PostDataAPI")] 
     public string PostDataAPI(JSONdata obj) 
     { 
      try 
      { 
       string k = obj.transactionType; 
       return k; 
      } 
      catch (Exception err) 
      { 
       throw err; 
      } 
     } 

的JSONdata類低於

public class JSONdata 
    { 
     public string transactionType { get; set; } 
     public string fundName { get; set; } 
     public string annualizedReturn { get; set; } 
     public string frequency { get; set; } 
    } 

問題是,我在得到空值的TRANSACTIONTYPE我的控制器。

如果JSON數據,它是Ajax通過這樣,

var jsondata={ "transactionType": "None", "fundName": "Myfund", "annualizedReturn": "10", "frequency": "Monthly"}; 

那麼所有的值都答對了。 請爲此提供解決方案。

+0

我不明白你的問題。你有你的解決方案:使用你的查詢模型的正確的AJAX表示。 –

+0

嗨,問題是,當我傳遞的問題的頂部提供的格式的對象,我不能從我的api訪問它的值。但是,如果通過的問題如下面的問題所示,我可以獲得這些值。 –

回答

0

您需要設置正確Content-Type頭,並且還通過使用JSON.stringify方法改變你的JavaScript對象到JSON字符串:

$.ajax({ 
    type: "POST", 
    url: "http://localhost:1101/Mypost/PostDataAPI", 
    contentType: "application/json", 
    data: JSON.stringify(jsondata) 
}).done(function (msg) { 
    alert(msg); 
}); 
1

我得到了解決。更改模型類如下

public class JSONdata 
{ 
    public comparisionCalculatorReq[] comparisionCalculatorReq { get; set; } 
} 
public class comparisionCalculatorReq 
{ 
    public string transactionType { get; set; } 
    public string fundName { get; set; } 
    public string annualizedReturn { get; set; } 
    public string frequency { get; set; } 
}