如何在 Controller 中检索 POST 数据

How to retrieve POST data in Controller

我正在尝试 POST 一个值 ASP NET Core ControllerController 不断获得 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方法的参数设置为字符串,然后反序列化it.Still字符串为空。
如何在控制器中检索 StringContent

最可能的原因是模型绑定错误。

要检查这一点,请像这样修改您的控制器方法:

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

并在 errorCount 行设置断点,如果计数 > 0,则进一步检查 ModelState 对象以查找特定错误。

此外,您确定您的 POST 请求使用 F12 浏览器工具正确地将您的对象添加到正文中。如果不确定,请附上截图。