ASP.NET WebAPI模型绑定无法正常工作

时间:2012-12-14 19:54:42

标签: ajax asp.net-web-api

在我完成了几个月的项目中,我在控制器中有这个:

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

1 个答案:

答案 0 :(得分:4)

您的ajax请求内容正文的格式为application/x-www-form-urlencoded
username=jon&password=123,但您已将内容类型设置为application/json。因此,Json.NET序列化程序无法反序列化请求正文内容。

您可以执行以下操作之一:

  1. 将内容类型更改为application/x-www-form-urlencoded,而不是将contentType明确设置为application/json

  2. 继续使用application/json但Json会对您的数据进行字符串化:
    data: JSON.stringify({ username: "jon", password: "123" })

  3. 希望这有帮助。