【发布时间】:2015-11-21 15:00:13
【问题描述】:
所以在 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.logvmopl,我会得到类似的东西
[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错误的代码)
【问题讨论】:
-
只要序列化表单就很简单了!
-
如果你用 POST 方法发送数据会怎么样 :)
-
而不是
ViewMethodOfPayment[] vmop尝试使用List<ViewMethodOfPayment> vmop -
@GuruprasadRao 我先试试,实际上,我会用结果回复
-
我觉得您的模型没有正确获取值,因为其中的属性区分大小写。因此,要么在推送到 vmop 时将其分配为
model,就像id应该是Id.. 尝试一次..
标签: javascript c# jquery ajax asp.net-mvc