[英]Sending an array of objects via AJAX - ASP.NET MVC
所以在JS中获取我需要的对象,我做了:
$('.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
});
}
});
如果我最终console.log
vmopl
,我会得到类似的东西
[Object { id="2", name="Card", inUse="True", ammount="500"},
Object { id="1", name="Cash", inUse="True", ammount="250"}]
现在,如果我尝试将此发送给AJAX,请使用
$.get('/reports/savebill/' + methodOfPayment + '?vmop=' + JSON.stringify(vmopl), function (data) {
if (data == 'True') {
location.href = '/order/neworder/';
} else {
alert("Unsuccessful!");
}
});
控制器动作应该选择vmop
,控制器如下所示:
public bool SaveBill(int id, ViewMethodOfPayment[] vmop) {
//lots of code...
}
但是当我放置一个断点时,我总是将vmop
视为null,即使我将它传递给另一个对象( var temp = vmop;
)。
ViewMethodOfPayment
是一个简单的模型类:
public class ViewMethodOfPayment
{
public long Id { get; set; }
public string Name { get; set; }
public bool InUse { get; set; }
public double Ammount { get; set; }
}
如果我错过了任何信息,或者我不清楚我想做什么/期望什么,请发表评论,我会尽快回答!
谢谢阅读!
编辑:更改了第一个代码块(第9行,因为我包含了一个会带来JavaScript错误的代码)
我目前使用的是什么:
Javascript通过JSON.stringify发送数据,就像你一样。
C#:
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;
}
}
尝试将[FromUri]放在ViewMethodOfPayment [] vmop之前,如下所示
public bool SaveBill(int id,[FromUri] ViewMethodOfPayment[] vmop) {
//lots of code...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.