Controller 和 JsonResult asp.net 核心

Controller and JsonResult asp.net core

为什么我需要从Controller继承到return JsonResult?

使 JsonResult 类型可用的机制是什么?

我试过考虑它,我想也许 Controller 将它声明为一个类型,但我不知道。

您需要继承 Controller 才能使用 Controller.Json utility method. You will however not need to inherit from Controller just to create a JsonResult。你总是可以只更新一个。只要你在一个控制器中(不一定是继承 Controller 的控制器),这仍然有效:

return new JsonResult(object);

至于为什么您需要继承 Controller 而不仅仅是 ControllerBase;许多结果实用方法实际上存在于 Controller 中。这样做的原因是那些针对以视图为中心的控制器,而 ControllerBase 通常用于 API 控制器。

现在人们会认为 returning JSON 结果 尤其是 对 API 控制器有用,但事实并非如此: 对于 API 控制器,您应该 return 和 ObjectResult 并让约定负责将其序列化为客户端请求的格式。这样,API 控制器可以轻松地同时支持 JSON 和 XML 等格式。