AJAX只将数组的最后一个元素传递给MVC 5控制器

AJAX passes only the last element of array to MVC 5 controller

本文关键字:MVC 控制器 元素 数组 最后一个 AJAX      更新时间:2023-12-25

我正试图通过AJAX将两个整数数组发送到我的MVC控制器。这是我的JavaScript代码:

    var condDeviceIDs = [];
    var resDeviceIDs = [];
    $("#selectDvcForCond").on('click', function () {
        var deviceID = $('#dvc-cond').val();
        condDeviceIDs.push(deviceID);
    });
    $("#selectDvcForRes").on('click', function () {
        var deviceID = $('#dvc-res').val();
        resDeviceIDs.push(deviceID);
    });
    $("#AddScenarioButton").on('click', function () {
        $.ajax({
            type: 'POST',
            url: "@Url.Action("AddScenario", "Device")",
            traditional: true,
            data: { 'conditionIDs': condDeviceIDs, 'resultIDs': resDeviceIDs },
        }
        );
    });

这是我的行动:

public ActionResult AddScenario(int[] conditionIDs,int[] resultIDs)

问题是axaj只将数组的最后一个元素传递给控制器。我用firebug检查了我的JS代码,它是正确的。例如,"condDeviceIDs"包含[17,4,6],但当ajax将其发送到控制器时,"conditionID"只包含[6]。我做错了什么?

您可以尝试以下代码

postData = { 'conditionIDs': condDeviceIDs, 'resultIDs': resDeviceIDs };
$.ajax({
    type: 'POST',
    contentType: "application/json;charset=utf-8",
    url: "@Url.Action("AddScenario", "Device")",
    dataType: 'json',
    data: JSON.stringify(postData),
    success: function (result) {
       console.log(result)
    },
    failure: function (result) {
       console.log(result)
    }
});

控制器

public ActionResult AddScenario(YourViewModel model)
{
}

创建ViewModel

public class YourViewModel
{
public int[] conditionIDs{ get; set; }
public int[] resultIDs{ get; set; }    
}