使用MVC3我试图完成以下操作。我有一个表有许多值,使用ajax我希望能够选择删除复选框(对于任意数量的行),这是表的一部分。
使用ajax将结果发布到控制器进行处理。我目前遇到的问题是我无法让控制器接受来自ajax帖子的数据。
我正在使用jQuery和json来进行ajax调用。
function removeRooms() {
var jdata = { 'mRooms': [] };
$('input:checked').each(function () {
jdata['mRooms'].push($(this).val()); })
$.ajax({
url: "/room/removeselectedroom/@Model.mRoomid",
type: "POST",
dataType: "json",
data: jdata,
success: function (msg) {
$('#mRooms').html(msg);
}
})
}
您可以提供任何帮助或资源。
编辑::还有一件事。我正在通过一个IEnumerable对象,但是有一个参数位于列表的第一个位置,值为'on',因为我的复选框中只有数字。
答案 0 :(得分:4)
尝试使用traditional: true
$.ajax({
url: "/room/removeselectedroom/@Model.mRoomid",
type: "POST",
dataType: "json",
data: jdata,
traditional: true,
success: function (msg) {
$('#mRooms').html(msg);
}
})
Here有关数组序列化的一些信息。
从jQuery 1.4开始,$ .param()方法递归地序列化深层对象,以适应现代脚本语言和框架,如PHP和Ruby on Rails。您可以通过设置jQuery.ajaxSettings.traditional = true;。
来全局禁用此功能
ASP.Net MVC模型绑定需要
形式的数组数据mRooms=1&mRooms=2&mRooms=3
但是从jQuery 1.4发送
mRooms[]=1&mRooms[]=2&mRooms[]=3
这就是你必须使用traditional: true