将JSON数据发布到Web API的问题

时间:2016-08-12 05:38:58

标签: jquery asp.net json ajax asp.net-web-api

我有一个网页,可以将数据发布到Web API。 ajax函数如下。

 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"};  

然后所有的值都正确。 请为此提供解决方案。

2 个答案:

答案 0 :(得分: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; }
}

答案 1 :(得分: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);  
});