从AJAX POST未正确填充Controller Action参数

时间:2013-11-15 17:47:04

标签: javascript jquery ajax asp.net-mvc-4

我正在执行AJAX调用,我希望Controller Action(使用HttpPost)接受IEnumerable<PercentageViewModel> percentages的参数

其中PercentageViewModel是:

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

Action上的填充数据结构在集合中有2个项目,但每个项目都填充了默认值(0和null)。以下是Chrome网络标题中显示的数据 - 当我点击AJAX Post XHR调用时

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

这是我填充将使用AJAX Post调用发送的params变量的JS。

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中构建数据,以便正确填充Action中的数据结构?

完全披露:这是我昨天问过的question的改写 - 只是一个更具针对性的问题。

1 个答案:

答案 0 :(得分:0)

这是允许正确填充服务器端数据结构的答案

var i = 0;
for (var idx in data) {
    params['percentages[' + i + '].Id'] = data[idx].Id;
    params['percentages[' + i + '].Percentage'] = data[idx].Percentage;
    i++;
}