Не удается отправить коллекцию целых чисел в метод Post API Web Core, он имеет значение null
Я хочу отправить коллекцию целых чисел в метод post на web core api.
Метод такой;
[HttpPost("open")]
public IActionResult OpenInspections([FromBody]IEnumerable<int> inspectionIds)
{
return NoContent();
//...
Это просто для тестирования, я поставил точку останова на операторе return, и полезная нагрузка inspectionIds
равна null
.
В почтальоне у меня есть
EDIT: я только что удалил квадратные скобки из подписи. Я пробовал и IEnumerable<int>
, и int[]
, но ни то, ни другое не сработало
2 ответа:
Он является нулевым, поскольку то, что разнесено и то, что ожидается действием, не совпадает, поэтому он не связывает модель при разнесении. Пример передаваемых данных имеет массив
string
["11111111", "11111112"]
, а не массивint
[11111111, 11111112]
,Также
IEnumerable<int>[]
представляет собой набор коллекций, таких как{ "inspectionIds": [[11111111, 11111112], [11111111, 11111112]]}
Чтобы получить желаемое поведение, либо обновите действие, чтобы ожидать желаемого типа данных
[HttpPost("open")] public IActionResult OpenInspections([FromBody]int[] inspectionIds) { //... }
Убедившись, что опубликованное тело также соответствует тому, что есть ожидаемый
[11111111, 11111112]
Или
Рассмотрим использование конкретной модели, поскольку размещенные данные в представленном вопросе являются объектом JSON .
public class Inspection { public int[] inspectionIds { get; set; } }
И соответственно обновить действие
[HttpPost("open")] public IActionResult OpenInspections([FromBody]Inspection model) { int[] inspectionIds = model.inspectionIds; //... }
Модель также должна соответствовать ожидаемым данным, которые будут опубликованы.
Обратите внимание, что если желаемые идентификаторы должны быть{ "inspectionIds": [11111111, 11111112] }
int
, то не заключайте их в кавычки.