📜  ActionExecutingContext 结果响应返回对象 - C# (1)

📅  最后修改于: 2023-12-03 15:13:15.300000             🧑  作者: Mango

ActionExecutingContext 结果响应返回对象 - C#

介绍

在 ASP.NET Core MVC 中,ActionExecutingContext 是在执行控制器中的操作方法之前执行的过滤器上下文对象。它提供了有关操作方法中使用的参数、控制器、请求、响应和其他信息的访问。它还允许您在执行操作方法之前更改这些信息。

结果响应返回对象

当控制器中的操作方法返回结果时,ActionExecutingContext 提供了一种方法来更改结果对象或在没有结果对象的情况下提供替代响应。以下是一些常见的结果响应返回对象:

ObjectResult

ObjectResult 是一个 ActionResult 衍生类,用于返回一个表示操作方法结果的对象,通常是一个模型对象。如果需要,可以更改结果对象,例如对它进行序列化、加密等处理。

public class ExampleController : Controller
{
    public IActionResult Get()
    {
        var model = new ExampleModel()
        {
            Id = 1,
            Name = "Example"
        };

        return new ObjectResult(model);
    }
}
EmptyResult

如果您想在不返回任何内容的情况下对请求作出响应(例如在 DELETE 操作中),可以使用 EmptyResult。

public class ExampleController : Controller
{
    [HttpDelete("{id}")]
    public IActionResult Delete(int id)
    {
        // Delete the item

        return new EmptyResult();
    }
}
StatusCodeResult

如果您想返回一个没有主体(body)的、只带有状态代码的响应(例如 HTTP 204 - No Content),可以使用 StatusCodeResult。

public class ExampleController : Controller
{
    [HttpDelete("{id}")]
    public IActionResult Delete(int id)
    {
        // Delete the item

        return new StatusCodeResult(204);
    }
}
JsonResult

如果您想更改要返回的 JSON 对象(例如,添加其他属性或更改属性的值),可以使用 JsonResult。

public class ExampleController : Controller
{
    public IActionResult Get()
    {
        var model = new ExampleModel()
        {
            Id = 1,
            Name = "Example"
        };

        return new JsonResult(new
        {
            Id = model.Id,
            UppercaseName = model.Name.ToUpper()
        });
    }
}
总结

ActionExecutingContext 结果响应返回对象提供了一些 Microsoft.AspNetCore.Mvc.ActionResult 衍生类,这些衍生类用于更改操作方法返回的结果。这些结果对象包括 ObjectResult、EmptyResult、StatusCodeResult 和 JsonResult,您可以根据需要选择其中一种结果对象。