MVC3 ajax将多个复选框值发布到控制器

时间:2011-07-12 15:20:10

标签: jquery ajax asp.net-mvc-3

使用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',因为我的复选框中只有数字。

1 个答案:

答案 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

的原因