So, getting the objects that I need in JS, I did:
$('.combine-payment-input').each(function (index, value) { if (parseFloat(value.value) > 0) { if (methodOfPayment == -1) { methodOfPayment = value.dataset.method; } else { methodOfPayment = 0; } vmopl.push({ id: value.dataset.method, name: $('label[for="' + value.id + '"]').html(), inUse: 'True', ammount: value.value }); } });
If I console.log vmopl , in the end I will get something like
[Object { id="2", name="Card", inUse="True", ammount="500"}, Object { id="1", name="Cash", inUse="True", ammount="250"}]
Now, if I try to send this to AJAX using
$.get('/reports/savebill/' + methodOfPayment + '?vmop=' + JSON.stringify(vmopl), function (data) { if (data == 'True') { location.href = '/order/neworder/'; } else { alert("Unsuccessful!"); } });
Controller action. If you select vmop up, the controller looks like this:
public bool SaveBill(int id, ViewMethodOfPayment[] vmop) {
But when I put a breakpoint, I always see vmop as null, even when I pass it to another object ( var temp = vmop; ).
ViewMethodOfPayment is a simple model class:
public class ViewMethodOfPayment { public long Id { get; set; } public string Name { get; set; } public bool InUse { get; set; } public double Ammount { get; set; } }
If I missed any information or if it is not clear what I want / expect, leave a comment, I will reply as soon as I can!
Thanks for reading!
edit: changed the first block of code (line: 9, because I included code that would lead to a JavaScript error)