Я нахожусь на ASP.Net MVC 3, и, следуя списку функций, поддерживаемых в at, я должен иметь возможность получить привязку модели json по умолчанию, работающую из коробки.Однако мне не удалось связать массив / коллекцию из json с параметром метода действия.Хотя я получил простую привязку объекта json, работающую правильноБыл бы очень признателен, если бы эксперт здесь мог сказать мне, что я делаю неправильно.
Вот код:
Сначала код на стороне сервера:
// Метод действия
public JsonResult SaveDiscount(IList<Discount> discounts)
{
foreach(var discount in discounts)
{
....
}
}
// Просмотр модели
public class Discount
{
string Sku{get; set;}
string DiscountValue{get; set;}
string DiscountType{get; set;}
}
// на стороне клиента (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
}
я проверил полезную нагрузку json в fiddler, и она выгляделакак показано ниже:
[
{"Sku":"sku1","DiscountType":"type1","DiscountValue":"10"},
{"Sku":sku2","DiscountType":"type1","DiscountValue":"12"},
{"Sku":"sku3","DiscountType":"type2","DiscountValue":"40"}
]
И на стороне сервера я вижу, что IList<Discount>
скидки заполнены 3 пустыми Discount
объектами - это означает, что свойства нулевые, но длина аргумента скидок равна 3.