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" };
È stato utile?

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 " };

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top