2015-04-23 198 views
0

我有一个ASP.NET Web API接受带有一个的usermodel在POST它传递的复杂类型这样的:的ASP.NET Web API从JavaScript JSON

public class UserModel 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public AddressModel CurrentAddress { get; set; } 
} 

AddressModel模式是这样的:

public class AddressModel 
{ 
    public string Country { get; set; } 
    public string City { get; set; } 
    public string Street { get; set; } 
    public string Number { get; set; } 
} 

我试图打电话日是来自JavaScript的API并发送一个JSON对象。这是JSON对象我送:

var user = { 
    Id: 1, 
    FirstName: 'Hello', 
    LastName: 'World', 
    CurrentAddress: { 
     Country: 'Israel', 
     City: 'Tel Aviv', 
     Street: 'Shalom', 
     Number: '5' 
    } 
}; 

我得到我Post方法是UserModel与充满正确的信息的usermodel领域,CurrentAddrent地址被初始化,但发送的值不存在。父对象的值(UserModel对象正常)。

我在这里做错了什么?你怎么能发送一个复杂的对象到WebAPI模型?

+0

它应该不是'[FromBody] UserModel userModel'? – 2015-04-23 10:08:36

+1

我肯定会仔细检查JSON被发送了一个像Fiddler这样的工具 – Padraic

+0

也许不相关,但你的类型并不真正匹配:'FirstName'和'LastName'是'int's,应该是'string's – Christian

回答

0

要在MVC Web API操作中接收复杂的数据对象,必须将[FromBody]属性添加到POST参数中。

[FromBody]告诉Web API搜索POST请求正文中的参数值。

[HttpPost] 
public void Post([FromBody] UserModel userModel) 
{ 

} 

我做了一个本地测试,并且获得了这些值。

我希望它有帮助!