在我完成了几个月的项目中,我在控制器中有这个:
public HttpResponseMessage Post(PersonModel model)
{
}
我可以在json对象中发送带有成员的ajax帖子,而WebAPI将无缝地填充模型中的每个属性。
但是,我刚刚开始了一个新项目并且正在做同样的事情,但控制器内部的模型现在只是null。绑定似乎被打破了。 ASP.NET WebAPI上有什么变化可以防止这种情况发生吗?
这是我的ajax请求:
$.ajax({ url: "api/auth", type: "post", data: { username: "jon", password: "123" },dataType: "json", contentType: "application/json; charset=utf-8" });
答案 0 :(得分:4)
您的ajax请求内容正文的格式为application/x-www-form-urlencoded
:
username=jon&password=123
,但您已将内容类型设置为application/json
。因此,Json.NET序列化程序无法反序列化请求正文内容。
您可以执行以下操作之一:
将内容类型更改为application/x-www-form-urlencoded
,而不是将contentType明确设置为application/json
继续使用application/json
但Json会对您的数据进行字符串化:
data: JSON.stringify({ username: "jon", password: "123" })
希望这有帮助。