2015-04-23 190 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) 
{ 

} 

我做了一個本地測試,並且獲得了這些值。

我希望它有幫助!