2012-03-06 15 views
5

Estoy usando la nueva WebApi que es parte de MVC4 beta. Tengo la clase siguiente:Deserialización/vinculación de modelo en MVC4 webapi no funciona con las matrices

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

Mi controlador se ve así:

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

En el lado cliente que serializar los datos utilizando un XmlSerializer. La salida se ve como se esperaba y la matriz Products está serializada. Si publico los datos y pongo un punto de corte dentro del método PostVoucher, obtengo los datos para Id y TableId, pero Products es null. ¿Alguna pista de lo que podría estar haciendo mal?

+0

Solo una pregunta, ¿ha agregado el atributo Serializable en ambas clases (Comprobante y Producto)? –

+2

No necesita el atributo '[Serializable]', las clases sin ningún atributo (es decir, POCO) funcionan bien. – carlosfigueira

Respuesta

6

Existe un problema con el modelo de encuadernación/deserialización de tipos complejos y XML en ASP.NET Web API Beta. Una forma de resolver este problema es "desactivar" el enlace del modelo y seleccionar la "ruta de deserialización" para esta acción. La publicación en http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/27/disabling-model-binding-on-asp-net-web-apis-beta.aspx muestra cómo hacerlo.

Observe que este es un problema conocido para la versión beta, y se solucionará en la próxima versión (RC).

+0

Gracias por esto. Me estaba arrancando los pelos tratando de descubrir por qué mi acción estaba feliz de aceptar JSON pero no deserializar XML. – Nick

Cuestiones relacionadas