如何在MVC.NET中使用jQuery发送多个数组?

时间:2016-07-19 08:10:25

标签: javascript jquery asp.net-mvc razor

我的Razor视图中有2个数组。第一个检查复选框,第二个检查未选中。我可以发送其中一个,但我不知道如何发送它们。这是我的jQuery代码:

$(document).ready(function() {
    $("#checkAll").click(function() {
        $(".checkBox").prop('checked', $(this).prop('checked'));
    });
    $("#confrim").click(function() {
        var selectedIDs = new Array();
        var unseletedeIDs = new Array();
        $('input:checkbox.checkBox').each(function() {
            if ($(this).prop('checked')) {
                selectedIDs.push($(this).val());
            } else {
                unseletedeIDs.push($(this).val());
            }
        });
        var options = {};
        options.url = "/Parts/ConfrimAll";
        options.type = "POST";
        options.data = JSON.stringify(selectedIDs);
        options.contentType = "application/json";
        options.dataType = "json";
        options.success = function(msg) {
            alert(msg);
        };
        options.error = function() {
            alert("Error!");
        };
        $.ajax(options);
    });
});

这是行动:

  public ActionResult ConfrimAll(int?[] selectedIDs, int?[] unSelectedIDs)
    {
        if (selectedIDs!=null)
        {
            foreach (int id in selectedIDs)
            {
                Part obj = db.Parts.Find(id);
                obj.IsOk = true;
                db.Entry(obj).State = EntityState.Modified;
            }
        }
        if (unSelectedIDs!=null)
        {
            foreach (int id in unSelectedIDs)
            {
                Part objs = db.Parts.Find(id);
                db.Parts.Remove(objs);
            }
        }
        db.SaveChanges();
    return Json("yes"); 
}

2 个答案:

答案 0 :(得分:1)

你试过这个吗?

JSON.stringify({ selectedIDs: selectedIDs, unseletedeIDs: unseletedeIDs });

你应该在Action中填充两个参数selectedIDsunseletedeIDs

答案 1 :(得分:0)

您可以将两个数组作为对象的一部分提供给data调用的$.ajax参数。试试这个:

$("#confrim").click(function() {
    var data = {
        SelectedIDs: [],
        UnSelectedIDs: [],
    }
    $('input:checkbox.checkBox').each(function() {
        data[this.checked ? 'SelectedIDs' : 'UnSelectedIDs'].push(this.value);
    });

    $.ajax({
        url: '/Parts/ConfrimAll',
        type: 'POST',
        data: data,
        success: function(msg) {
            console.log(msg);
        },
        error: function(x, s, e) {
            console.log('Error!');
            console.log(x, s, e);
        }
    });
});

请注意,为data参数提供一个对象是一个更好的做法,因为jQuery会根据需要为您编写所需的格式,然后转义任何特殊字符。