Подтвердить что ты не робот

Сообщение AJAX строкового массива JavaScript в JsonResult как List <string> Всегда возвращает нуль?

Я пытаюсь создать массив строк в JavaScript и получить результаты в списке строк в методе действий. Ниже приведен пример моего JavaScript. Я использую jQuery 1.4.2. Проблема заключается в том, что мой список в методе действий всегда показывает NULL. Будет ли строковый массив JavaScript неверным для строкового списка на С#?

    var test = ['test1', 'test2'];

    var parms = {
        var1: 'some string',            
        var2: test
    };

    $.ajax({
        type: "POST",
        url: "/Test/JSONTestAction",
        async: false,
        data: parms,
        dataType: "json",
        success: function(data) {

            // success
        }
    });

Затем мой JsonResult выглядит следующим образом:

    public JsonResult JSONTestAction(string var1, List<string> var2)
    {
        // var2 is always NULL -- not good

        return Json(new { test = "test" });
    }
4b9b3361

Ответ 1

Я столкнулся с такой же проблемой после обновления до jQuery 1.4.2. Вы можете найти решение здесь (в разделе Ajax).

Добавление традиционного: true в параметрах ajax должно работать.

$.ajax({
    type: "POST",
    traditional: true,
    url: "/Test/JSONTestAction",
    async: false,
    data: parms,
    dataType: "json",
    success: function(data) {

        // success
    }
});

Ответ 2

Это изменение должно было сделать собственное поведение лучше для пользователей PHP/Rails, вы можете прочитать о параметрах, которые меняются здесь больше.

Вы можете включить его для запроса следующим образом:

$.ajax({ 
 //Stuff...
 traditional:true 
});

Или глобально, как это (нужно только запустить один раз перед запуском любых запросов):

jQuery.ajaxSettings.traditional = true;