我见过许多类似的问题,我已经尝试了所有可能的答案,但我的问题仍然是一样的。基本上,我有以下ajax调用。
var obj = {
Duration: 12000,
Errors: 2
};
var post = $.ajax({
url: APIUrl,
data: JSON.stringify(obj),
type: "POST",
cache: false,
dataType: 'json',
contentType: 'application/json, charset=utf-8'
});
这是我的视图模型。
public class TargetBasedViewModel
{
public int Duration{ get; set; }
public int Errors{ get; set; }
}
这是我的控制器。
[HttpPost]
public HttpResponseMessage Post(TargetBasedViewModel test)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
问题是参数保持为空。 我已经使用Fiddler来检查请求,它看起来很好,所有属性都在那里,我甚至可以检查JSON对象并确保我的值实际上被发送到服务器。我已经阅读了很多文章,甚至尝试将[ModelBinder]和[FromBody]添加到参数中,但仍然没有运气。 我还尝试将其添加到我的Application_Start()
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings();
任何想法我可能做错了什么?
答案 0 :(得分:0)
您可以查看this post和接受的答案。它表明:
我认为我得到了它!您的contentType参数:
它必须是“application / json; charset = utf-8”
“json”之后你有一个COMMA。
答案 1 :(得分:0)
检查控制器上的ModelState属性。在那里记录反序列化错误。您可能会发现反序列化失败的原因。