2012-03-06 56 views
5

我正在使用新的WebApi,它是MVC4測試版的一部分。我有以下類:MVC4 webapi中的反序列化/模型綁定不適用於陣列

public class Voucher 
{ 
    public string Id { get; set; } 
    public string TableId { get; set; } 
    public Product[] Products { get; set; } 
} 

我的控制器看起來是這樣的:

public class VouchersController : ApiController 
{ 
    public Voucher PostVoucher(Voucher voucher) 
    { 
      //.... 
    } 
} 

在客戶端序列化使用XmlSerializer數據。輸出看起來像預期的那樣,並且Products陣列被序列化。如果我發佈數據並在PostVoucher方法中輸入一個斷點,我會得到IdTableId的數據,但Products的數據是null。任何暗示我可能做錯了什麼?

+0

只是一個問題,你是否在兩個類(Voucher和Product)中添加了Serializable屬性? – 2012-03-06 23:31:32

+2

您不需要'[Serializable]'屬性,沒有任何屬性的類(即POCO)就可以正常工作。 – carlosfigueira 2012-03-07 00:38:01

回答

6

ASP.NET Web API Beta中的複雜類型和XML的模型綁定/反序列化存在一個問題。解決此問題的一種方法是「禁用」模型綁定,併爲此操作選擇「反序列化路徑」。 http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/27/disabling-model-binding-on-asp-net-web-apis-beta.aspx的帖子展示瞭如何做到這一點。

請注意,這是一個已知的beta版問題,將在下一個(RC)版本中修復。

+0

謝謝你。我試圖弄清楚爲什麼我的行爲很樂意接受JSON,但是沒有對XML進行反序列化。 – Nick 2012-04-23 09:23:06