我尝试使用jQuery的AJAX函数将一些数据发布到我的Web API,但MVC并没有在另一端成功地将其序列化 - 它只是保留了模型的默认值。 Some seemingly useful answers似乎无法解决我的问题,而且一点都不复杂,所以我不确定出了什么问题。
我的模特:
public class SavedLevel
{
public int ID { get; set; }
public string Data { get; set; }
}
AJAX请求:
var postData= {};
postData.ID = 12;
postData.Data = "hello";
$.ajax(
{
url: "api/level/post",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({data : postData}),
dataType: "json",
success: function (data)
{
//Something
},
error: function (jqXHR, textStatus, errorThrown)
{
//Something
}
});
API控制器。
[Route("api/level/post")]
[HttpPost]
public HttpResponseMessage PostLevel(SavedLevel data)
{
Debug.WriteLine("id : " + data.ID);
Debug.WriteLine("data : " + data.Data);
return new HttpResponseMessage(HttpStatusCode.OK);
}
请求正文。
{"data":{"ID":12,"Data":"hello"}}
Debug
控制台输出0
和""
,而不是预期的12
和"hello"
。
感谢阅读。
注意:我尝试使用dynamic
对象并且根本无法工作 - 我甚至无法检查它是否为空。
答案 0 :(得分:1)
将您的data
更改为:
data: JSON.stringify(postData),
因此请求正文变为:
{"ID":12,"Data":"hello"}
C#期待SavedLevel对象,但是您正在发送包装在另一个对象中的对象。