我在这里做错了什么?
我可以成功地将 4 个 bool 参数传递给 Controller 。现在我想将一个 int 数组传递给我的 Controller ,但它不起作用 - 我在示例中留下了我的工作代码(注释掉)所以你可以看到我并没有改变那么多 - 我想我是缺少一些简单的东西(毕竟是 17:44!!!)。我可以看到数组是使用 alert(rolesChecked);
填充的声明:
var rolesChecked = [];
$('[type="checkbox"].role-checkbox').each(function () {
if (this.checked)
{
rolesChecked.push($(this).val());
}
});
alert(rolesChecked);
//var administrator = $('#cbAdministrator').is(":checked");
//var manager = $('#cbManager').is(":checked");
//var technician = $('#cbTechnician').is(":checked");
//var transcriber = $('#cbTranscriber').is(":checked");
if (rolesChecked.count > 0){//administrator || manager || technician || transcriber) {
$.ajax({
url: '@Url.Action("GetFutureHolidays", "Employee")',
type: 'GET',
dataType: 'json',
// we set cache: false because GET requests are often cached by browsers
// IE is particularly aggressive in that respect
cache: false,
data: {
roleIdXXXs: rolesChecked
//includeAdministrator: administrator,
//includeManager: manager,
//includeTechnician: technician,
//includeTranscriber: transcriber
},
success: function (data) {
//do something...
}
});
}
Controller Action :
public string GetFutureHolidays(List<int> roleIdXXXs)//bool includeAdministrator, bool includeManager, bool includeTechnician, bool includeTranscriber)
{
//do something
}
使用旧代码, Controller 操作将被击中...使用数组,它永远不会被击中...我在这里缺少什么...
另外,我认为List<int> roleIdXXXs
应该没问题,不过我也试过了List<string>
, int[]
和 string[]
万一不是!!!
最佳答案
您需要添加 traditional: true
ajax 选项以将数组回发到集合中
$.ajax({
url: '@Url.Action("GetFutureHolidays", "Employee")',
type: 'GET',
dataType: 'json',
cache: false,
data: { roleIdXXXs: rolesChecked },
traditional: true, // add this
success: function (data) {
}
});
另请参阅 answer to this question有关这些选项的作用及其生成的表单数据的更多详细信息。
关于javascript - 使用ajax javascript将一个int数组传递给MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33021551/