Пустой параметр массива для jQuery Ajax Вызов в MVC - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть простой метод MVC API:

[System.Web.Http.HttpPost]  // Important: it is not System.Web.Mvc.HttpPost
public void MyMethod(object[] arr)
{
    ...
}

Я звоню, используя этот javascript:

$.ajax({
    url: url,
    method: "POST",
    data: { arr: ['1','2']},
    dataType: "json",
    traditional: true,
    error: function (e) {
        ...
    },
    success: function (res) {
        ...
    }
});

Вызов выполнен успешно, но значением arr в коде C # является пустой массив (строка [0]). Я нашел несколько примеров таких звонков, предлагая в основном добавить традиционные: правда, но это все еще не работает. Я также попытался предоставить данные в разных форматах, например:

  • data: {arr: ['1', '2']}
  • данные: {['1', '2']}
  • данные: ['1', '2']
  • JSON.stringify (['1', '2'])

и ничего из этого не работает. Идеи?

1 Ответ

0 голосов
/ 15 сентября 2018

Вам необходимо указать параметр [FromBody]:

[System.Web.Http.HttpPost]  // Important: it is not System.Web.Mvc.HttpPost
public void MyMethod([FromBody] object[] arr)
{
    ...
}

И ваш код должен быть:

$.ajax({
    url: url,
    method: "POST",
    data: ['1','2'],
    dataType: "json",
    traditional: true,
    error: function (e) {
        ...
    },
    success: function (res) {
        ...
    }
});

Если вы укажете ключ / значение, например {Arr: ['1', '2']}, тогда выдолжен создать структуру для вашего тела:

class MyMethodPostJson
{
    public List<string> Arr;
}

И использовать:

[System.Web.Http.HttpPost]  // Important: it is not System.Web.Mvc.HttpPost
public void MyMethod([FromBody] MyMethodPostJson arr)
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...