gpt4 book ai didi

javascript - 将 Javascript ES6 Map() 传递给 MVC Controller

转载 作者:行者123 更新时间:2023-11-30 20:17:20 24 4
gpt4 key购买 nike

我正在使用 Map() ES6 中创建 key 对值列表的功能,使 ID 号成为 bool 值。我想将此 Javascript 对象传递给 MVC 4 Controller 。

这是我的 Javascript:

var bankHolidays = new Map();
$('.bank-holiday-switch').each(function () {
var id = $(this).attr('id');
var isChecked = $(this).is(':checked');
bankHolidays.set(id, isChecked);
});

$.ajax({
url: '/AdminPanel/Settings/SaveBankHolidays',
type: 'POST',
data: { bankHolidays: bankHolidays },
success: function (result) {
alert("Success");
}
});

我可以console.log() map 对象并看到它正在按预期创建。但是,当我将它传递给这个 MVC Controller 时:

[HttpPost]
public JsonResult SaveBankHolidays(Dictionary<int, bool> bankHolidays)
{
// DO stuff
}

..没有抛出错误,但它只是说 bankHolidays字典中有 0 个值。我可以毫无问题地调用该 Controller 中的其他操作。我尝试了很多不同的组合 Dictionary<string, bool>无济于事。

谁能告诉我我做错了什么?

最佳答案

在 http 协商中,在这种情况下为 xhr,我们必须发送字符串,因此您需要 Map() 的一些字符串表示,在我看来,最好的选择是使用 JSON stringify在某种程度上,因为 JSON 的解析在服务器端代码中有广泛的支持:

var bankHolidays = new Map();

bankHolidays.set(1, 2);
bankHolidays.set(3, 4);

var result = JSON.stringify([...bankHolidays]);

console.log(result)

在你的代码中是这样的:

$.ajax({
url: '/AdminPanel/Settings/SaveBankHolidays',
type: 'POST',
data: JSON.stringify([...bankHolidays]),
success: function (result) {
alert("Success");
}
});

在后端你必须解析响应,参见this .

关于javascript - 将 Javascript ES6 Map() 传递给 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51804367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com