ASP.NET MVC passando il tipo complesso al problema del controller
-
03-07-2019 - |
Domanda
Ho un problema a passare un tipo complesso a un controller.
Ecco come appare la mia modella:
public class Party
{
[XmlAttribute]
public int RsvpCode { get; set; }
public List<Guest> Guests { get; set; }
public string Comments { get; set; }
}
public class Guest
{
[XmlAttribute]
public string Name { get; set; }
[XmlAttribute]
public int MealOption { get; set; }
[XmlAttribute]
public bool Attending { get; set; }
}
Il metodo del mio controller è simile al seguente:
public JsonResult Submit(Party party)
{
return Json(party);
}
e sto provando a fare la mia chiamata ajax in questo modo:
var party = { RsvpCode: 1, Guests: [{ Name: "test asdfasdf", MealOption: 1, Attending: true }, { Name: "test asdfasdf", MealOption: 1, Attending: true}] };
$.getJSON("/Rsvp/Submit", party, function(response) {
alert(response);
});
Qualcosa non va ma non so cosa. Mi viene restituito qualcosa nella nota di avviso. Qualche idea?
Ho anche provato a guardare il valore che viene inviato nel metodo del controller e non sembra corretto. Sto perdendo le informazioni da qualche parte nella chiamata Ajax.
Ho anche provato a creare il mio oggetto party in questo modo e non ha funzionato:
var party = { "RsvpCode": 1, "Guests": [{ "Name": "test asdfasdf", "MealOption": 1, "Attending": true }, { "Name": "test asdfasdf", "MealOption": 1, "Attending": true}], "Comments": "testdsfsdf" };
Soluzione
Quando stavo costruendo la variabile party, ASP.NET MVC si aspetta che assomigli a questo:
var party = {" RsvpCode " ;: 1, " Guests [0] .Name " ;: " test asdfasdf " ;, " Guests [0] .MealOption " ;: 1, " Guests [0]. ;: true, " Guest [1] .Name " ;: " test asdfasdf " ;, " Guests [1] .MealOption " ;: 1, " Guests [1] .Attending " ;: true, " Commenti " ;: " ; testdsfsdf " };