2012-12-14 55 views
0

在一个项目中,我完成几个月来,我在控制器中有这样的:ASP.NET的WebAPI模型绑定不工作

public HttpResponseMessage Post(PersonModel model) 
{ 
} 

我可以把阿贾克斯后用JSON对象中的成员,并且会的WebAPI无缝填充模型中的每个属性。

但是,我刚刚开始一个新项目,并且正在做同样的事情,但控制器内部的模型现在只是空值。绑定似乎被打破。 ASP.NET WebAPI中的某些内容发生了变化,可以防止这种情况发生?

这是我的Ajax请求:

$.ajax({ url: "api/auth", type: "post", data: { username: "jon", password: "123" },dataType: "json", contentType: "application/json; charset=utf-8" }); 

回答

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

希望这有助于。