我正在执行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的改写 - 只是一个更具针对性的问题。
答案 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++;
}