我有一个网页,可以将数据发布到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"};
然后所有的值都正确。 请为此提供解决方案。
答案 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);
});