MVC API控制器的复杂对象没有从jquery ajax调用中填充

我试图调用POST API控制器。 控制器被调用,但复杂的对象是空的。 我跑了Fiddler,对象甚至在那里填充。 我究竟做错了什么?

我的C#对象

public class RegisterUser { public Guid PersonId { get; set; } public string Email { get; set; } public string Business { get; set; } public string EmployeeNumber { get; set; } public string UserName { get; set; } } 

API Post Controller

 public HttpResponseMessage Post(RegisterUser user) { //This is where the problem is. Everything in user is null //even though I can see it coming through on Fiddler. } 

Javascript代码

 function User(personId, userName, email, business, employeeNumber) { this.PersonId = personId; this.Email = email; this.Business = business; this.EmployeeNumber = employeeNumber; this.UserName = userName; } function RegisterUser(url) { var createdUser = new User("b3fd25ba-49e8-4247-9f23-a6bb90a62691", "username", "email", "business", "56465"); $.ajax(url, { data: JSON.stringify({ user: createdUser }), type: "post", contentType: "application/json" }); } 

Web API路由配置

 public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "RegisterApi", routeTemplate: "api/{controller}/{user}" ); } } 

createdUser已经包含createdUser所需的数据,格式正确,无需将其包装在混淆模型绑定器的user属性中。

只需写入data: JSON.stringify(createdUser) ,它应该工作正常:

 function RegisterUser(url) { var createdUser = new User("b3fd25ba-49e8-4247-9f23-a6bb90a62691", "username", "email", "business", "56465"); $.ajax(url, { data: JSON.stringify(createdUser), type: "post", contentType: "application/json" }); } 

模型绑定的原理很简单,直到您在JS和C#对象中具有匹配的属性名称和对象结构,它应该可以正常工作。