Передать список целых чисел из JavaScript в C# — я получаю список, но он пустой; данные формы не структурированы должным образом?

У меня есть свой массив, заполненный следующим образом:

updateLabels: function () {
    var diagrams = _stage.diagramLayer.getChildren();

    var componentIDs = new Array();

    for (var index = 0; index < diagrams.length; index++) {
        componentIDs.push(diagrams[index].componentID);
    }

    var self = this;
    $.ajax({
        url: '../PlanView/UpdateDiagrams',
        type: 'POST',
        data: { ComponentIDs: JSON.stringify(componentIDs), RackInfo: $('#RackInfoSelect').val() },
        success: function (data) {
            console.log('success');
        },
        error: function () {
            console.log("error");
        }
    });
    },

на стороне сервера. У меня есть этот метод:

[CompressionFilterAttribute]
public JsonResult UpdateDiagrams(List<int> componentIDs, string rackInfo)
{
    List<object> diagramInformation = new List<object>(componentIDs.Count());
}

мои данные, которые передаются по сети:

ComponentIDs:[74,445,732,351,348,347,1123,599,600,1053,350,601,602,603,332,99,877,919,349,348,347,347,349,348]
RackInfo:Equipment Weight

Я успешно получаю RackInfo, если я изменю UpdateDiagrams на ожидание List, тогда я получу список с одним элементом, всей строкой ComponentIDs

Что я здесь делаю неправильно?

​​РЕДАКТИРОВАТЬ: Я работаю под MVC3. Я должен иметь возможность использовать какую-то автоматическую десериализацию при переходе к моему контроллеру, я просто не знаю, как это сделать.

РЕШЕНИЕ: Решение заключалось в том, чтобы обернуть мой объект данных в JSON. stringify, а не только идентификаторы компонентов. Несмотря на то, что я могу получить переменную RackInfo на стороне сервера, не преобразовывая ее в JSON.

6
задан Sean Anderson 21 March 2012 в 15:33
поделиться