Recentemente ho riscontrato un problema durante l'implementazione di una soluzione JSON per un client. Se il nome del parametro di azione corrisponde a un nome di proprietà del modello, il raccoglitore non riesce a associare QUALSIASI proprietà.MVC3 Json Bind Bug?
Un esempio:
controller persone
public ActionResult SetEmails(Person emails){
...
return Content("");
}
Poiché il nome del parametro è stato chiamato "email" e che corrisponde a un nome di proprietà del modello di persona chiamata "Messaggi di posta elettronica" .. il legante non riesce, ma non dà alcuna indicazione sul perché ..
avevano un modello chiamato persona
public class Person {
public string Name { get; set; }
public List<string> Emails { get; set; }
public Person() {
Emails = new List<string>();
}
}
Si tratta di un bug o di una 'funzione'?
Proprio come una nota a margine, la mia domanda riguarda più in che modo il nome di un argomento potrebbe causare un conflitto a un raccoglitore? Il nome non dovrebbe avere importanza in quanto è il tipo di classe che definisce lo schema in modo che corrisponda ai dati JSON. Perché il raccoglitore dovrebbe preoccuparsi di ciò che si chiama l'argomento o se corrisponde a un nome di proprietà all'interno del tipo di classe dell'argomento stesso?
puoi pubblicare il codice js di chiamata o almeno il JSON che stai inviando? –
json sarebbe: {"Nome": "Giovanni", "Email": ["[email protected]", "test2 @ test.com "]} Il json andava bene, come ho affermato, una volta ho cambiato il nome dell'argomento Actions da Email (corrisponde al nome della proprietà dei modelli) a tutto ciò che non corrisponde, ha funzionato .. Ho pensato che fosse interessante e non riesco a vedere perché questo non dovrebbe funzionare, o per lo meno lanciare un'eccezione invece di una classe istanziata con valori di proprietà nulli !? – Mike