Estoy en ASP.Net MVC 3, y pasando por la lista de funciones admitida en at, debería ser capaz de obtener el enlace de modelo json predeterminado funcionando de la caja. Sin embargo, no he tenido éxito en vincular una matriz/colección de json al parámetro del método de acción. A pesar de que obtuve un enlace de objeto json simple, funcionaba bien. Agradecería mucho si un experto aquí pudiera decirme lo que estoy haciendo mal.ASP.Net MVC 3 - Enlace de modelo JSON a la matriz
Aquí está el código:
código del lado del servidor en primer lugar:
// Acción Método
public JsonResult SaveDiscount(IList<Discount> discounts)
{
foreach(var discount in discounts)
{
....
}
}
// Ver modelo
public class Discount
{
string Sku{get; set;}
string DiscountValue{get; set;}
string DiscountType{get; set;}
}
// lado del cliente (jQuery/js):
var discount = {};
var jsondatacoll = [];
$('#discountgrid tr').each(function() {
sku = $(this).find("td").eq(1).html();
discValue = $(this).find('.discval').val();
discType = $(this).find('.disctype').val();
discount = { Sku: sku, DiscountType: discType, DiscountValue: discValue};
jsondatacoll.push(discount);
}
})
if (jsondatacoll.length > 0) {
var catalogDiscount = JSON.stringify(jsondatacoll);
$.ajax(
{
url: '/url/savediscount',
type: 'POST',
data: catalogDiscount,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data, textStatus, jqXHR) {
...
},
error: function (objAJAXRequest, strError) {
...
}
}
); //ajax
}
lo hice comprobar la carga útil JSON en violinista y parecerse a continuación:
[
{"Sku":"sku1","DiscountType":"type1","DiscountValue":"10"},
{"Sku":sku2","DiscountType":"type1","DiscountValue":"12"},
{"Sku":"sku3","DiscountType":"type2","DiscountValue":"40"}
]
Y en el lado del servidor que hago ver las IList<Discount>
descuentos se ha rellenado con 3 vacías Discount
objetos - es decir, las propiedades son nulos pero la longitud del argumento descuentos es 3.
Las propiedades de su modelo deben marcarse como "públicas". ¿Typo o descuido? –
¡guau! eso fue un descuido !!! ¿Te gustaría ingresar esto como respuesta para que yo pueda marcarlo? :) – thanikkal
Gracias a que el resto de tu publicación es correcta (aparte de los "públicos" que faltan), noté que contentType se configuraba junto con JSON.stringify y marcaba la diferencia. Luchado con esto durante horas! ¡Gracias! –