Модель получена пустой в контроллере после поста - PullRequest
2 голосов
/ 02 мая 2020

В моем API Asp. Net Core 3.1 у меня есть некоторые контроллеры, которые получают viewModel, но когда я отправляю сообщение, модель приходит пустой в контроллере.

Моя ClientViewModel:

public class ClientViewModel
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    public IEnumerable<OperationViewModel> Operations { get; set; }
}

Мой Добавить ClientController:

    [HttpPost]
    public async Task<ActionResult<ClientViewModel>> Add(ClientViewModel clientViewModel)
    {
    //...
    }     

Post Json:

  {
    "id": 0,
    "name": "Bradesco",
    "operations":[]
  }  

Это происходит со мной на любом контроллере, который получает модель, пут, пост. Я не знаю, что может быть.

Ответы [ 2 ]

3 голосов
/ 02 мая 2020

Возможно, у вас нет атрибута ApiController на контроллере, поэтому он пытается проанализировать данные в запросе как данные формы вместо JSON.

Либо укажите в клиентской модели атрибут [FromBody], либо добавьте [ApiController] в контроллере, который поставляется с другими необычными функциями.

источник

1 голос
/ 02 мая 2020

Вам необходимо добавить атрибут FromBody в методе контроллера.

[HttpPost("/my-endpoint")]
public async Task<ActionResult<ClientViewModel>> Add([FromBody] ClientViewModel clientViewModel)
{
  //...
}     

Атрибут from body делает именно это. Получает данные и при условии, что у вас есть правильная модель (которую вы делаете), связывает ее с моделью

...