Voglio inviare un oggetto complesso con un array nidificato in uri a un metodo di azione MVC in una richiesta GET.Usando [FromUri] attributo - legano oggetto complesso con array nidificato
Si consideri il seguente codice:
public ActionResult AutoCompleteHandler([FromUri]PartsQuery partsQuery){ ... }
public class PartsQuery
{
public Part[] Parts {get; set; }
public string LastKey { get; set; }
public string Term { get; set; }
}
$.ajax({
url: "Controller/AutoCompleteHandler",
data: $.param({
Parts: [{ hasLabel: "label", hasType: "type", hasIndex : 1 }],
LastKey : "Last Key",
Term : "Term"
}),
dataType: "json",
success: function(jsonData) { ... }
});
Questo funziona bene e si lega in modo corretto utilizzando il legante modello predefinito in MVC Web Api.
Tuttavia, passare questo semplice MVC non WebAPI e le pause legante modello predefinito verso il basso e non possono vincolare la proprietà sugli oggetti nella matrice nidificato:
selezione
partsQuery != null //Good
--LastKey == "Last Key" //Good
--Term == "Term" //Good
--Parts[] != null //Good
----hasLabel == null //Failed to bind
----hasType == null //Failed to bind
----hasIndex == 0 //Failed to bind
Vorrei sapere perché questo si rompe in pianura MVC e come fare FromUriAttribute
legano questo oggetto correttamente in pianura MVC
Cosa succede se si cambia 'Parte [] Parti' in' Parti ICollection'? E puoi mostrare la definizione della classe per 'Part'? –
Provando questo ora. La parte è semplice POCO con {get; impostato; } oggetti di scena – parliament
'Part' ha un costruttore senza parametri? –