Как получить данные POST в контроллере - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь POST значение до ASP NET Core Controller.Controller продолжает получать значение null, и я не понимаю, почему.

Отправка запроса

 string uri = "/api/create";
//some POCO--not important 
  CampaignRequest<CreateCampaignParams> req = new 
  CampaignRequest<CreateCampaignParams> { Data = campaignParams, Ticket = this.ticket };

  var content = new StringContent(JsonConvert.SerializeObject(req), Encoding.UTF8, "application/json");
  var response = await this.http.PostAsync(uri, content);

Получатель

   [HttpPost]
   [Route("api/create")]
   public async Task<long> CreateAsync([FromBody]CampaignRequest<CreateCampaignParams>pars)
   {
    //--- the received argument is null...i have tried putting as a string argument to no avail
      try
      {
        var client = new CampaignClient(uri,pars.Ticket.Value);
        long rez=await client.CreateCampaignAsync(pars.Data);
        return rez;   
      }
      catch (Exception)
      {
        return 0;
      }
}

Я попытался установить параметр метода Controller как строку, а затем десериализовать ее. Пока строка была пустой.
Как получить StringContent в контроллере?

1 Ответ

0 голосов
/ 28 января 2019

Наиболее вероятной причиной является ошибка привязки модели.

Чтобы проверить это, измените метод контроллера следующим образом:

[HttpPost]
[Route("api/create")]
public async Task<long> CreateAsync([FromBody]CampaignRequest<CreateCampaignParams> pars)
{
     var errorCount = ModelState.ErrorCount;

И установите точку останова на этой строке errorCount, есличисло> 0, а затем проверяет объект ModelState на наличие конкретных ошибок.

Также вы уверены, что ваш POST-запрос правильно добавляет ваш объект в тело с помощью инструментов браузера F12.Пожалуйста, включите скриншот этого, если не уверены.

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