Привязка массива строк JSON к ASP.NET MVC3

#jquery #.net #asp.net-mvc-3

#jquery #.net #asp.net-mvc-3

Вопрос:

Возможно ли опубликовать массив строк JSON в MVC3 без пользовательского связующего? Массив создается на основе значений флажков, и я отправляю его через jQuery следующим образом:

 var checkedItems = $(":checked").map(function () {
        return this.value;
    }).get();

    $.post("/test/delete", { Items: checkedItems });
  

Исходные строки запроса post выглядят следующим образом:

 Items%5B]=test1.comamp;Items%5B]=test2.comamp;Items%5B]=test3.com
  

Я взглянул на исходный код MVc3, и оказалось, что мне нужно использовать значения индекса, такие как [0], [1]. Если MVC3 не может привязать массив изначально, есть ли простой способ изменить значения post, чтобы они имели значения индекса, требуемые MVC3?

Ответ №1:

Вам необходимо указать тип содержимого, чтобы asp.net чтобы mvc считывал его как json, используйте ajax-функцию jquery следующим образом:

     $.ajax({
        url: "/test/delete",
        type: 'POST',
        dataType: 'json',
        data: JSON.stringify({Items: checkedItems}),
        contentType: 'application/json; charset=utf-8',
        success: function (data) {

        }
    });
  

и получаем json2.js чтобы сделать json.stringify доступным в браузере, который его не поддерживает

Ответ №2:

Вам нужно закодировать массив

 { Items: JSON.stringify(checkedItems) }
  

А затем декодировать его с другой стороны. Но будьте осторожны — JSON.stringify недоступен в IE7.

Комментарии:

1. Получить json2.js он добавит JSON.stringify, когда он недоступен, и ничего не коснется, когда он будет доступен.