利用过滤器ActionFilter给MVC控制器/动作添加操作

发布时间 2023-11-30 23:03:58作者: 万金流

如题,用于控制器和action上,可做额外操作。

重载“OnActionExecuting”方法,可用于鉴权。(本例未展示)

本例仅示范用法,.net6下调试通过。

要点:

  1、名称空间: using Microsoft.AspNetCore.Mvc.Filters; 

  2、可以通过返回“context.Result”来终止后续Action的执行。它的其他属性见微软文档

步骤:

  1、新建webapi项目(略)

  2、过滤器代码:

public class MyFilter:ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        string? t = context.HttpContext.Request.Headers.Host.ToString();
        context.Result = new ContentResult() { 
            Content = t
        };
        base.OnActionExecuting(context);
    }
}

  3、控制器代码 

[Route("api/[controller]/[action]")]
[ApiController]
public class TestController : ControllerBase
{
    [HttpGet]
    [MyFilter]
    public string Get1()
    {
        return "ok1";
    }
    [HttpGet]
    public string Get2()
    {
        return "ok2";
    }
}

  4、结果

 关于ActionFilter的其他可重写方法,见微软官网