Как заставить анализ массива json работать на стороне сервера - PullRequest
2 голосов
/ 29 сентября 2010

У меня есть действие на моей стороне сервера:

public void Action(Container container)
{
}

, где контейнер:

public class Container
{
   public string[] Arr;
}

Со стороны клиента я вызываю это действие следующим образом:

$.post("Controller/Action", { Arr: "abc" }, null, "json");

После этого Arr в контейнере содержит один элемент " abc ".

Но, вызывая действие, как показано ниже:

$.post("Controller/Action", { Arr: ["abc", "def"] }, null, "json");

массив json не десериализуется на стороне сервера. Arr в контейнере NULL .

Как заставить эту простую вещь работать?

С уважением

1 Ответ

0 голосов
/ 29 сентября 2010

Если вы используете jquery 1.4, попробуйте это:

$.ajax({
    url: 'Controller/Action',
    type: 'post',
    data: { Arr: [ 'abc', 'def' ] },
    traditional: true,
    dataType: 'json'
});

Обратите внимание на флаг traditional .

Или, если вы предпочитаете продолжать использовать $.post():

$.post(
    'Controller/Action', 
    $.param({ Arr: [ 'abc', 'def'] }, true), 
    null, 
    'json'
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...