MVC3 ajax Post Mutliple значения флажка для контроллера - PullRequest
2 голосов
/ 12 июля 2011

Используя 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, но в позиции 1 списка есть параметр item со странным значением 'on', поскольку в моих флажках есть только цифры.

1 Ответ

4 голосов
/ 12 июля 2011

Попробуйте сериализовать данные с помощью traditional: true

$.ajax({
    url: "/room/removeselectedroom/@Model.mRoomid",
    type: "POST",
    dataType: "json",
    data: jdata,
    traditional: true,
    success: function (msg) {
        $('#mRooms').html(msg);
    }
})

Здесь некоторая информация о сериализации массива.

Начиная с jQuery 1.4, метод $ .param () рекурсивно сериализует глубокие объекты для поддержки современных языков сценариев и сред, таких как PHP и Ruby on Rails.Вы можете отключить эту функцию глобально, установив jQuery.ajaxSettings.traditional = true;.

Для привязки модели ASP.Net MVC требуются данные массива в виде

mRooms=1&mRooms=2&mRooms=3

Но из jQuery1.4 отправляет

mRooms[]=1&mRooms[]=2&mRooms[]=3

Вот почему вы должны использовать traditional: true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...