2013-11-15 2 views
0

Я выполнением вызова AJAX, и я хочу Действие контроллера (с помощью HttpPost) принять параметр IEnumerable<PercentageViewModel> percentagesпараметра Действие контроллера не правильно заселен с AJAX POST

где PercentageViewModel является:

public class PercentageViewModel 
{ 
    public int Id { get; set; } 
    public string Percentage { get; set; } 
} 

Заполненная структура данных в Action имеет 2 элемента в коллекции, но каждый элемент заполняется значениями по умолчанию (0 и null). Вот данные, как представляется, в Chrome Network Headers - когда я нажимаю на вызов AJAX сообщение XHR

percentages[0][Id]:7 
percentages[0][Percentage]:26.1 
percentages[1][Id]:8 
percentages[1][Percentage]:20.3 

Вот JS, где я наполнении params переменную, которая будет послана с помощью AJAX Post вызова.

var params = {}; 
var dict = []; 
for (var idx in data) { 
    var item = { 
     Id: idx, 
     Percentage: data[idx] 
    }; 
    dict.push(item); 
} 
params['percentages'] = dict; 

где переменные данные содержат данные, как это (при записи на консоль Chrome):

Object {7: "26.1", 8: "20.3"} 

Как я могу построить данные в JS, так что структура данных в действии заполняется правильно?

Полное раскрытие информации: это перефразирование question Я спросил вчера - как более целенаправленный вопрос.

ответ

0

Это был ответ, который позволит структура на стороне сервера данные заполняться правильно

var i = 0; 
for (var idx in data) { 
    params['percentages[' + i + '].Id'] = data[idx].Id; 
    params['percentages[' + i + '].Percentage'] = data[idx].Percentage; 
    i++; 
} 
Смежные вопросы