AJAX пост-массив строк в webapi 2 - PullRequest
0 голосов
/ 25 октября 2018

Вот мой вызов ajax:

var myIds = ["A","B","C"]
$.ajax({
    type: "POST",
    url: /DoStuffAndThings?year=2018&name=test,
    data: {myIds: myIds},
    traditional: false
});

Вот мое действие контроллера:

[HttpPost]
public void DoStuffAndThings(int year, string name, [FromBody] List<string> myIds) {
    // do stuff
}

год и имя без проблем, но myIds всегда пуст.

Я пробовал

data: {myIds: myIds} и data: myIds и data: {"": myIds}, и я пытался использовать Ienumerable<string> и List<string> и string[]

, и я пробовал традиционный: trueи ложь

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Связыватель модели не может проанализировать отправленные данные, поскольку он не знает формат

Использовать JSON.stringify вместе с соответствующими параметрами

var myIds = ["A","B","C"];
$.ajax({
    type: "POST",
    url: "/DoStuffAndThings?year=2018&name=test",
    contentType: "application/json",
    dataType: "json",
    data:JSON.stringify(myIds),
    traditional: false
});

Связыватель модели должен бытьвозможность распознавать коллекцию строк в теле запроса.

0 голосов
/ 25 октября 2018

При отправке данных на веб-сервер данные должны быть строкой.Преобразуйте объект JavaScript в строку с помощью JSON.stringify ().

Перед данными используйте JSON.stringify(myIds).

 var myIds = ["A","B","C"]
  $.ajax({
       type: "POST",
       contentType: "application/json",
       dataType: 'json',
       url: /DoStuffAndThings?year=2018&name=test,
       data: JSON.stringify(myIds),
       traditional: false
 });
...