5

J'utilise le nouveau WebApi qui fait partie de MVC4 beta. J'ai la classe suivante:La désérialisation/liaison de modèles dans webapi MVC4 ne fonctionne pas avec les tableaux

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

Mon contrôleur ressemble à ceci:

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

Du côté client, je sérialiser les données à l'aide d'un XmlSerializer. La sortie ressemble à prévu et le tableau Products est sérialisé. Si je poste les données et que je mets un point d'arrêt à l'intérieur de la méthode PostVoucher, j'obtiens les données pour Id et TableId, mais Products est null. Tout indice que je pourrais faire mal?

+0

Juste une question, avez-vous ajouté l'attribut Serializable dans les deux classes (Voucher et Produit)? –

+2

Vous n'avez pas besoin de l'attribut '[Serializable]', les classes sans attributs (c'est-à-dire, POCO) fonctionnent correctement. – carlosfigueira

Répondre

6

Il existe un problème avec la liaison/désérialisation de modèle de types complexes et XML dans la version bêta de l'API Web ASP.NET. Une façon de résoudre ce problème consiste à «désactiver» la liaison de modèle et à sélectionner le «chemin de désérialisation» pour cette action. Le poste à http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/27/disabling-model-binding-on-asp-net-web-apis-beta.aspx montre comment faire cela.

Notez qu'il s'agit d'un problème connu pour la version bêta et qu'il sera résolu dans la prochaine version (RC).

+0

Merci pour cela. Je me suis arraché les cheveux en essayant de comprendre pourquoi mon action était heureuse d'accepter JSON mais n'a pas réussi à désérialiser XML. – Nick

Questions connexes