【问题标题】:Can't use Json() in asp.net core web api as it in asp.net core web无法在 asp.net core web api 中使用 Json(),因为它在 asp.net core web 中
【发布时间】:2020-08-03 14:20:26
【问题描述】:

在 asp.net core web 中我创建了一个控制器,我可以使用:

return Json(new {status=true});

但在 asp.net core web API 中我做不到。

在控制器中:

[HttpGet("{id}")]
        public JsonResult Get(int id)
{

}

我无法返回Json()

怎么用?

【问题讨论】:

  • 嗨@liang.good 我的回答是否帮助您解决了问题?
  • 恐怕不行。return Ok(new {state=true}) 是答案

标签: asp.net-core asp.net-core-webapi


【解决方案1】:

Asp.Net Core Web API 确实支持多种响应类型,Json 就是其中之一。你可以这样做,如下所示。确保您拥有所有必需的依赖项。您可以从我在此答案中附加的文档链接中了解依赖关系。

[HttpGet]
public IActionResult Get()
{
    return Json(model);
}

您还可以使用控制器上的 [Produces] 过滤器指定严格的响应格式。

配置自定义格式化程序

您还可以通过在您的Startup.cs 中调用ConfigureServices 方法中的.AddFormatterMappings() 在 Asp.Net Web API 项目中配置您自己的自定义格式化程序。这样可以更好地控制您的内容协商部分并实现严格的限制。

请查看this 文档以进一步了解。

使用带有状态码的响应

但是,在使用 Web API 时,我建议您使用内置的辅助方法,以便您的响应变得更具表现力,因为它包含响应内容和状态代码。下面是一个如何做到这一点的示例

[HttpGet]
public ActionResult Get()
{
    return Ok(_authors.List());
}

有关可用辅助方法的完整列表,您可以查看 Controller.csControllerBase.cs 类。

【讨论】:

  • 没问题(_authors.List());返回哪个内容类型“application/json”或“text/plain”?
  • 只要您没有另外指定,它将是 JSON。 JSON 是 ASP.NET Core 使用的默认格式
【解决方案2】:

Asp.net 核心 web api 继承自 controllerBase,它不包含 Json(Object) 方法。您应该在操作中自己初始化一个新的 JsonResult。

[HttpGet("{id}")]
public JsonResult Get(int id)
{
    return new JsonResult(new { status = true });
}

【讨论】:

    猜你喜欢
    • 2019-02-11
    • 2021-11-12
    • 1970-01-01
    • 2017-11-01
    • 2022-10-07
    • 2023-03-12
    • 2021-09-16
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多