2016-08-12 28 views
-1

私はWeb APIにデータを投稿するWebページを持っています。 ajax関数は次のとおりです。私のウェブAPIコントローラで投稿された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); 
}); 

問題はで私がtransactionTypeにnull値を得ている、ということである

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

の下JSONdataクラスがある

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

以下のように私は方法を持っています私のコントローラ。 JSONデータはアヤックスに、次のように渡された場合

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

は、すべての値が正しいました。 解決策を提示してください。

+0

私はあなたの質問を理解していません。解決策があります:クエリモデルの正しいAJAX表現を使用します。 –

+0

こんにちは、問題は、オブジェクトの私は、質問の上部に提供されている形式で渡しているとき、私はそこからAPIの値にアクセスすることはできません。しかし、質問に以下のように渡された場合、私は値を得ることができます。 –

答えて

0

あなたは正しいContent-Typeヘッダーを設定してもJSON.stringify方法を使用してJSON文字列にあなたのjavascriptオブジェクトを変換する必要があります。

$.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; } 
} 
関連する問題