使用ajax javascript传递一个int数组给MVC控制器
passing an array of int to MVC controller using ajax javascript
我哪里做错了?
我可以成功地传递4 bool参数到控制器。现在我想传递一个int数组到我的控制器,但它不起作用-我在示例中留下了我的工作代码(注释掉),所以你可以看到我没有改变那么多-我想我错过了一些简单的东西(毕竟是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...
}
});
}
控制器动作:public string GetFutureHolidays(List<int> roleIdXXXs)//bool includeAdministrator, bool includeManager, bool includeTechnician, bool includeTranscriber)
{
//do something
}
在旧代码中,控制器动作将被击中…对于数组,它永远不会被击中…我错过了什么…
也,我认为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) {
}
});
在if语句中,而不是rolesChecked。使用rolesChecked.length
您不能从Ajax提交这样的列表,您正在使用的过程中最快的修复方法是使用序列化-脱盐过程,您可以将其发送为
在行动:
roleIdXXXs: JSON.stringify(rolesChecked)
public ActionResult GetFutureHolidays(string rolesChecked)
{
var test = new JavaScriptSerializer().Deserialize<List<int>>(rolesChecked);
}
您应该像这样在AJAX调用上使用JSON.stringify():
data: {
roleIdXXXs: JSON.stringify(rolesChecked)
//includeAdministrator: administrator,
//includeManager: manager,
//includeTechnician: technician,
//includeTranscriber: transcriber
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- JavaScript中的正则表达式:隔离一个int值
- 用JS解析两个HTML字符串,并将其中一个转换为Int
- 将一个大数字字符串转换为int
- String.charAt() 在给定一个无法解析为 int 的字符串的情况下返回什么
- 使用ajax javascript传递一个int数组给MVC控制器
- Regexp用于检查输入是否仅为整数(int),以及检查另一个输入是否仅为带有2位小数的数字
- 如何测试一个值是字符串还是int
- 连接一个字符串和一个int值,同时给一个
- 在Javascript中为国际象棋游戏创建一个2D对象数组和int对象数组
- 如何在javascript中从一个数组和一个int文本的json中检索值