Pregunta

Tengo un problema al pasar un tipo complejo a un controlador.

Así es como se ve mi modelo:

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

El método de mi controlador se ve así:

    public JsonResult Submit(Party party)
    {
        return Json(party);
    }

y estoy tratando de hacer mi llamada ajax de esta manera:

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

Algo va mal, pero no estoy seguro de qué. Estoy recibiendo algo devuelto a mí en la declaración de alerta. ¿Alguna idea?

También intenté ver el valor que se está enviando al método del controlador y no se ve bien. Estoy perdiendo la información en algún lugar de la llamada ajax.

También intenté esto creando mi objeto de fiesta así y no funcionó:

var party = { "RsvpCode": 1, "Guests": [{ "Name": "test asdfasdf", "MealOption": 1, "Attending": true }, { "Name": "test asdfasdf", "MealOption": 1, "Attending": true}], "Comments": "testdsfsdf" };
¿Fue útil?

Solución

Cuando estaba construyendo la variable party, ASP.NET MVC espera que se vea así:

var party = {" RsvpCode " ;: 1, " Huéspedes [0] .Nombre " ;: " test asdfasdf " ;, 'Huéspedes [0] .MealOption " ;: 1, " Huéspedes [0] .Atención " ;: true, " Invitados [1] .Nombre " ;: " prueba asdfasdf " ;, " Invitados [1] .MealOption " 1, " Invitados [1] .Atendiendo " ;: verdadero, " Comentarios " ;: " ; testdsfsdf " };

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top