【问题标题】:Deserialization / model binding in MVC4 webapi does not work with arraysMVC4 webapi中的反序列化/模型绑定不适用于数组
【发布时间】:2012-03-24 11:18:02
【问题描述】:

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

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。任何提示我可能做错了什么?

【问题讨论】:

  • 只是一个问题,您是否在两个类(Voucher 和 Product)中都添加了 Serializable 属性?
  • 您不需要 [Serializable] 属性,没有任何属性的类(即 POCO)可以正常工作。

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


【解决方案1】:

在 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) 版本中修复。

【讨论】:

  • 谢谢你。我一直在努力弄清楚为什么我的操作很乐意接受 JSON 但未能反序列化 XML。
猜你喜欢
  • 2019-06-03
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 2012-06-12
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
相关资源
最近更新 更多