ASP.NET MVC pasando un tipo complejo al problema del controlador
-
03-07-2019 - |
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" };
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 " };