无法在asp.net核心网络api中使用Json(),因为它在asp.net核心网络中

时间:2020-08-01 04:07:42

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

在asp.net核心网站中,我创建了一个控制器,并且可以使用:

return Json(new {status=true});

但是在asp.net核心Web API中,我做不到。

在控制器中:

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

}

我无法退回Json()

如何使用它?

2 个答案:

答案 0 :(得分:1)

Asp.Net Core Web API确实支持多种响应类型,其中Json就是其中之一。您可以如下所示进行操作。确保您具有所有必需的依赖项。您可以从我在此答案中随附的文档链接中了解相关性。

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

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

配置自定义格式化程序

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

请仔细阅读this文档以进一步了解。

使用带有状态码的响应

但是,建议您在使用Web API时使用内置的帮助器方法,这样您的响应既包含响应内容,又包含状态代码,因此更具表达性。下面是一个执行此操作的示例

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

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

答案 1 :(得分:0)

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

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