Модель контроллера Web API возвращает ноль - PullRequest
0 голосов
/ 14 мая 2018

Когда я использую контроллер Web API с FROMBody, модель всегда возвращает null.

Модель для объекта Product, как показано ниже с ProductID и объектом списка заказов:

public class ProductModel
{
    [Required]
    public string productID { get; set; }
    [Required]
    public List<Order> order { get; set; }

}
public class Order
{
    public string orderId { get; set; }
    public string name { get; set; }
}

public IHttpActionResult PostProduct([FromBody]ProductModel model)
{
    var jsonContent = new JavaScriptSerializer().Serialize(model);
}

Пример JSON, используемый в POSTMAN ниже. Отмечено, что при передаче в Продукте с 1 Заказом у меня нет объекта «Заказ» с квадратной скобкой [], это связано с тем, что конечная система потребляет контроллер, всегда передавая без [] для одного продукта.

При отладке ордер всегда равен нулю. Он работает нормально, пока я вложил объект Order в [].

{
    "productID":"1",
    "order":{
        "orderId":"1-88",
        "name":"Shoe"
        }
}

Можно ли настроить модель для обработки обоих сценариев, одного продукта и нескольких продуктов с помощью вышеуказанного JSON.

Я пытаюсь сделать что-то невозможное?

1 Ответ

0 голосов
/ 14 мая 2018

Для проблемы, когда список заказов всегда равен нулю без скобок, можете ли вы сделать установщик частным для коллекции и вернуть новый инициализированный список, если он пуст?Или вы можете закодировать конструктор по умолчанию, который инициализирует ваш список заказов.

См .: WebAPI 2 не десериализует List свойство объекта FromBody в запросе POST

Youтакже можно попробовать удалить FromBody для привязки к сложному типу.Для пользовательской обработки одной или нескольких моделей продуктов попробуйте создать привязку пользовательской модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...