5

Sto usando il nuovo WebApi che fa parte di MVC4 beta. Ho la seguente classe:Deserialization/model binding in MVC4 webapi non funziona con le matrici

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

mio regolatore di simile a questa:

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

Sul lato client ho serializzare i dati utilizzando un XmlSerializer. L'output sembra come previsto e l'array Products è serializzato. Se inserisco i dati e inserisco un punto di interruzione all'interno del metodo PostVoucher, ottengo i dati per Id e TableId, ma Products è null. Qualche suggerimento su cosa potrei fare male?

+0

Solo una domanda, hai aggiunto attributo Serializable in entrambe le classi (Voucher e Prodotto)? –

+2

Non è necessario l'attributo '[Serializable]', le classi senza attributi (ad esempio, POCO) funzionano correttamente. – carlosfigueira

risposta

6

C'è un problema con l'associazione/deserializzazione del modello di tipi complessi e XML nella Beta API Web ASP.NET. Un modo per risolvere questo problema è "disabilitare" l'associazione del modello e selezionare il "percorso di deserializzazione" per questa azione. Il post a http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/27/disabling-model-binding-on-asp-net-web-apis-beta.aspx mostra come farlo.

Si noti che questo è un problema noto per la versione beta e verrà risolto nella prossima versione (RC).

+0

Grazie per questo. Mi stavo strappando i capelli cercando di capire perché la mia azione fosse felice di accettare JSON, ma non ho deserializzato l'XML. – Nick