繁体   English   中英

通过AJAX发送一个对象数组 - ASP.NET MVC

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM