У меня есть свой массив, заполненный следующим образом:
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.