控制器操作参数未从 AJAX 开机自检正确填充

Controller Action parameter not properly populated from AJAX POST

本文关键字:开机自检 填充 AJAX 操作 参数 控制器      更新时间:2023-09-26

我正在执行 AJAX 调用,我希望控制器操作(使用 HttpPost)接受参数 IEnumerable<PercentageViewModel> percentages

其中PercentageViewModel是:

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

操作上填充的数据结构在集合中有 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 中构造数据,以便正确填充操作中的数据结构?

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

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

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