Входные данные в каждом <div class="EmbPosWrap">
относятся к вашему EmbellishmentCartDetailItemModelVM
, поэтому вам нужно изменить метод публикации, чтобы принять коллекцию
public ActionResult EmbellishmentOrder (List<EmbellishmentCartDetailModelVM.EmbellishmentCartDetailItemModelVM> vm)
или использовать EmbellishmentCartDetailModelVM
, который содержит коллекцию EmbellishmentCartDetailItemModelVM
(свойство Items
)
public ActionResult EmbellishmentOrder (EmbellishmentCartDetailModelVM vm)
Далее, у вас недействительный html из-за дублирования атрибутов id
, и вы должны изменить свои входные данные hdden, чтобы вместо них использовать имена классов
<div class="EmbPosWrap">
<input class="hidden-field" class="CartItemId" name="CartItemId" value="167" type="hidden"/>
<input class="hidden-field" class="StoreId" name="StoreId" value="1" type="hidden"/>
....
<div class="EmbPosBx">
<input type="checkbox" class="embellishmentcart" name="embellishmentcart" value="1" />
<input type="checkbox" class="embellishmentcart" name="embellishmentcart" value="2" />
....
</div>
</div>
Затем в сценарии необходимо выполнить итерацию контейнеров <div>
и контейнера foreach, построить объект и добавить его в массив, который вы затем отправляете в метод
$('#submit').click(function () {
var collection = [];
var containers = $('.EmbPosWrap');
$.each(containers, function(index, item) {
var CartItemId = $(this).find('.CartItemId');
var StoreId = $(this).find('.StoreId');
....
var embellishmentcart = [];
var checkboxes = $(this).find('.embellishmentcart:checked');
$.each(checkboxes, function(index, item) {
embellishmentcart.push($(this).val());
})
collection.push({ CartItemId: CartItemId, StoreId: StoreId, .... , embellishmentcart: embellishmentcart });
})
$.ajax({
type: "POST",
url: '@Url.Action("EmbellishmentOrder", "EmbellishmentCart")',
dataType: 'json',
contentType: 'application/json', // add
data: JSON.stringify(collection), // see note below
success: function (data) {
....
});
});
});
Обратите внимание, что если вы используете модель EmbellishmentCartDetailModelVM
в методе POST (2-й вариант выше), тогда опция data
должна быть
data: JSON.stringify({ Items: collection }),