【发布时间】:2018-08-11 22:50:47
【问题描述】:
我正在使用 ES6 中的 Map() 功能来创建密钥对值列表,将 ID 号设置为布尔值。我想将此 Javascript 对象传递给 MVC 4 控制器。
这是我的 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() 地图对象并看到它正在按预期创建。但是,当我将它传递给这个 MVC 控制器时:
[HttpPost]
public JsonResult SaveBankHolidays(Dictionary<int, bool> bankHolidays)
{
// DO stuff
}
.. 没有抛出错误,但它只是说 bankHolidays 字典中有 0 个值。我可以毫无问题地调用该控制器中的其他操作。我尝试了许多不同的Dictionary<string, bool> 组合,但均无济于事。
谁能告诉我我做错了什么?
【问题讨论】:
-
请看documentation;默认情况下,数据以
application/x-www-form-urlencoded发送。您可能想要使用 JSON:contentType: "application/json" -
您是否有特殊原因要使用
Map? - 您不能使用 ajax 发送Map- 在发布之前需要将其转换回object
标签: javascript .net asp.net-mvc-4 ecmascript-6