MVC4 webapi中的反序列化/模型绑定不适用于数组

时间:2012-03-06 22:19:39

标签: c# asp.net-mvc model-binding xmlserializer asp.net-web-api

我正在使用新的WebApi,它是MVC4 beta的一部分。我有以下课程:

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的数据,但Productsnull。什么提示我可能做错了什么?

1 个答案:

答案 0 :(得分: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上的帖子显示了如何做到这一点。

请注意,这是测试版的已知问题,将在下一个(RC)版本中修复。