Я думаю, это потому, что вы передаете объект "ProductID" вместо строки.Если ваш класс ProductID имеет только одну переменную, строку, может быть проще использовать:
public List<string> ProductIDs { get; set; }
В противном случае, если ProductID имеет несколько переменных, таких как ID, Location, Amount и т. Д., Вам нужно будет передать значениеобъект вместо строки.Это означает, что в фактической записи сваггера это будет выглядеть примерно так:
{"ID": "32a", "var2": 421112, "Product Available":false}
Сваггер может прочитать это как объект и назначить правильные поля.Если вы просто передадите цифру или букву, например 32a, она, по сути, будет считаться пустым или неправильно сформированным объектом.