可以在控制器上面 进行标注使用某个过滤器
控制器和Action的过滤器 需要实现一个特性类
比如ResultFilterAttribute
然后在里面 也可以实现OnResultExecuting
另外 还可以添加自定义的属性。
除了ResultFilterAttribute还包含
ActionFilterAttribute
ExecutionFilterAttribute
FormatFilterAttribute
ServiceFilterAttribute
TypeFilterAttribute
这些过滤特性
增加一个结果过滤器特性标注
public class FoxDevelopResultFilterAttribute : ResultFilterAttribute
{
public string Val { set; get; }
public FoxDevelopResultFilterAttribute()
{
}
public void OnActionExecuted(ActionExecutedContext context)
{
//Action执行之后执行这里的代码
}
public void OnActionExecuting(ActionExecutingContext context)
{
//Action执行之前执行这里的代码
}
}
使用结果特性过滤器
[FoxDevelopResultFilter(Val = "www.FoxDevelop.COM")]
public IActionResult Index()
{
return View();
}Code language: PHP (php)
ResultFilter 是先执行action 再执行两个方法的。
控制器类Controller的方法达到过滤的效果
其实我们可以重写基类控制器里面的的这两个方法 达到过滤的效果
//
// 摘要:
// Called after the action method is invoked.
//
// 参数:
// context:
// The action executed context.
[NonAction]
public virtual void OnActionExecuted(ActionExecutedContext context);
//
// 摘要:
// Called before the action method is invoked.
//
// 参数:
// context:
// The action executing context.
[NonAction]
public virtual void OnActionExecuting(ActionExecutingContext context);Code language: PHP (php)
public class BaseController : Controller
{
public override void OnActionExecuted(ActionExecutedContext context)
{
base.OnActionExecuted(context);
//Action执行之后执行这里的代码
}
public override void OnActionExecuting(ActionExecutingContext context)
{
//Action执行之前执行这里的代码
}
}
Previous: 33-全局过滤器
Next: 35-视图中使用依赖注入