Asp.Net Core API中的控制器返回类型

问题描述 投票:0回答:3
    [HttpGet("{id}")]
    public Visitor Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result == _visitorRepository.GetFromDB(id))
            return StatusCode(200);
        if (result != null)
            return result;
        else
            return StatusCode(408);
    }

它给我一个错误,因为StatusCode具有ActionResult返回类型

    [HttpGet("{id}")]
    public ActionResult Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result == _visitorRepository.GetFromDB(id))
            return StatusCode(200);
        if (result != null)
            return result;
        else
            return StatusCode(408);
    }

它给了我一个错误,因为结果有访客返回类型

我只需要一个方法,但我无法将ActionResult的返回类型转换为访问者,反之亦然。

c# asp.net-core
3个回答
4
投票

您可以按照以下说明更正您的两项功能。

如果你的第一个功能:

[HttpGet("{id}")]
    public Visitor Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result != _visitorRepository.GetFromDB(id))
            return StatusCode(200); // Somehow make this to return "Visitor" type
        if (result != null)
            return result;  // Somehow make this to return "Visitor" type
        else
            return StatusCode(408); // Somehow make this to return "Visitor" type
    }

如果您想使用第二个功能,请进行以下更改:

[HttpGet("{id}")]
    public ActionResult Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result != _visitorRepository.GetFromDB(id))
            return Ok();
        if (result != null)
            return Ok(result); // Return type of ActionResult
        else
            return BadRequest();
    }

仅供参考ActionResultStatusCode(200)返回类型可能是

return Ok();

0
投票
return new HttpStatusCodeResult(HttpStatusCode.OK);  // OK = 200

https://forums.asp.net/t/2084457.aspx?How+do+I+return+HttpStatus+codes+in+ASP+NET+Core+1+0+API+


0
投票

解:

[HttpGet("{id}")]
public IActionResult Get(string id)
{
  if (id == null)
  {
    return BadRequest();
    var result = _visitorRepository.GetFromDB(id);
  }
  if (result != null)
    return Ok(result);

  else
    return NotFound();
}
© www.soinside.com 2019 - 2024. All rights reserved.