Voy los plátanos tratando de averiguar cómo serializar esto (en MVC 3):¿Cómo serializo una matriz de objetos jQuery para JSON Post?
// 1. Cómo cargo la matriz productos en la vista:
var products = [];
if (quantity > 0) {
products.push({ 'id': id, 'quantity': quantity });
}
// 2. A continuación, he puesto un montón de valores, junto con los productos, así:
$.ajax({
type: "POST",
url: '/Orders/Create/',
data:
{
'ShipToPersonId': shipToPersonId,
'ShipToPersonType': selectedPersonType,
'ShippingAddressId': shipToAddressId,
'ShippingInstructions': 'Not yet implemented',
'LineItems': products,
'OrderOwnerId': selectedOnBehalfOfPersonId
},
dataType: "json",
success: function (data) {
alert('Saved: ' + data);
},
error: function (data) {
alert('failed:' + data);
}
});
// 3. Mi controlador se ve así:
public JsonResult Create(
int ShipToPersonId,
string ShipToPersonType,
int ShippingAddressId,
string ShippingInstructions,
List<LineItem> LineItems,
int OrderOwnerId)
{...}
// 4. La clase LineItem:
public class LineItem{
public string id {get;set;}
public string quantity { get; set; }
}
En las funciones del controlador, todos los valores se pasan correctamente, a excepción de la lista LineItem; tiene el recuento correcto de elementos, sin embargo, los valores de id y cantidad son nulos.
He puesto la llamada a través violinista, y esto es lo que me sale:
[Fiddler Web Forms Ver]
=================================
Body | Value
========================|========
LineItems[0][id] | 50
LineItems[0][quantity] | 10
LineItems[1][id] | 46
LineItems[1][quantity] | 20
LineItems[2][id] | 48
LineItems[2][quantity] | 30
LineItems[3][id] | 30
LineItems[3][quantity] | 50
[Ver violinista cadena de consulta]
ShipToPersonId=533
&ShipToPersonType=Rep
&ShippingAddressId=517
&ShippingInstructions=Not+yet+implemented
&LineItems%5B0%5D%5Bid%5D=50&LineItems%5B0%5D%5Bquantity%5D=10
&LineItems%5B1%5D%5Bid%5D=46&LineItems%5B1%5D%5Bquantity%5D=20
&LineItems%5B2%5D%5Bid%5D=48&LineItems%5B2%5D%5Bquantity%5D=30
&LineItems%5B3%5D%5Bid%5D=30&LineItems%5B3%5D%5Bquantity%5D=50
&OrderOwnerId=533
Obviamente, la cadena serializada y el parámetro del controlador no son "compatibles". ¿No estoy formateando la matriz de productos correctamente en la vista, o es la lista de artículos de línea y la clase en el controlador que no están bien, o ambas cosas?
¿Alguien puede arrojar algo de luz sobre esto? ¡Gracias!
¿Alguien en esto?