Sending an array of objects via AJAX - ASP.NET MVC

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) { //lots of code... } 

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)

+7
javascript jquery c # ajax asp.net-mvc
source share
2 answers

What i am using now:

Javascript sends data through JSON.stringify, just like you do.

FROM#:

 public ActionResult AjaxDoSomething(string vmop) { var jss = new JavaScriptSerializer(); try { var parameter = jss.Deserialize<ViewMethodOfPayment []>(vmop); //Do something with this data and return the desired result return Json(result, JsonRequestBehavior.AllowGet); } catch { return null; } } 
+3
source share

try putting [FromUri] before ViewMethodOfPayment [] vmop, as shown below

 public bool SaveBill(int id,[FromUri] ViewMethodOfPayment[] vmop) { //lots of code... } 
0
source share

All Articles