Ajax отправка JSON списка объектов (List) в контроллер

Как отправить Ajax’ом список объектов (List) в JSON формате, в контроллер для дальнейшей работы с ним.

Незаполненные поля получат значение null.

Скрипт в представлении

 //Сохранение накладной
$('body').on('click', 'button[name="SaveInvoiceBill"]', function () {
//Соберем таблицу как массив объектов
var billDetails = [];
$('.item').each(function () {
	var name = $(this).find('.name').val();  //Название
	var quantity = parseInt($(this).find('.quantity').val()); //Количество
	var price = parseFloat($(this).find('.price').val());//Цена
	var summ = parseFloat($(this).find('.item-summ').attr('value'));//Сумма
	var productId = parseFloat($(this).find('.item-id').attr('value'));//Id Товара
	var productSkuId = parseInt($(this).find('.item-sku-id').attr('value'));//Id Торгового предложения Товара
	var notRec = $(this).find('.item-not-rec').prop('checked');//Учитывать товар или нет
	billDetails.push({ Name: name,
			Quantity: quantity,
			Price: price,
			Summ: summ,
			ProductId: productId,
			ProductSkuId: productSkuId,
			NotRec: notRec });
});
console.log(billDetails);
billDetails = JSON.stringify({ 'billDetails': billDetails }); //Превратим в Стетхема
//Отправим  на сохранение
$.ajax({
	url: "/Bills/AjaxSaveInvoiceBill/",
	method: "POST",
	contentType: 'application/json',
	data: billDetails,
	success: function (response) {
		window.location.replace("/Bills/List/");
	}
});

return false;
});

Контроллер

 [HttpPost]
        public ActionResult AjaxSaveInvoiceBill(List<BillDetail> billDetails) 
        {
            if (billDetails.Count == 0) return Json(new { result = "error", message = "В накладной нет товаров" }, JsonRequestBehavior.AllowGet);
            //Создадим новую приходную накладную, получим ее ID
            long billId = Bill.CreateBill(BillTypes.Invoice);
            //Теперь сохраним каждую позицию под ID новой накладной
            BillDetail.SaveBillDetails(billDetails, billId);
            return Json(new { result="success", message="Накладная успешно создана" }, JsonRequestBehavior.AllowGet);
        }

Добавить комментарий