本次学习的文件结构如下
1.过滤器的几种表示方式
1.1将过滤器 加到方法上,作用范围为该方法
1.2将过滤器加到当前类上,作用范围为该类的所有方法
1.3添加全局过滤器,作用范围为所有方法
2.Action过滤器
作用范围:执行在Action方法前后
2.1代码
public class MyActionFilterAttribute:ActionFilterAttribute { //在Action方法执行之前 public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.HttpContext.Response.Write("执行Action方法前-OnActionExecuting<br/>"); base.OnActionExecuting(filterContext); } //在Action方法执行之后 public override void OnActionExecuted(ActionExecutedContext filterContext) { filterContext.HttpContext.Response.Write("执行Action方法后-OnActionExecuted<br/>"); base.OnActionExecuted(filterContext); } }
2.2运用-获得路由信息及路由对象
2.3运用-检查被请求的方法 是否 加了某特性
查看运行结果
一张图来记忆:
原来是跳过了2,3,即跳过了Action方法的执行,但4,5,6照样执行
3.Result过滤器
作用范围:加载“视图”前后,因为有些Action方法不会生成视图,但以下方法照样会执行
代码如下:
public class MyResultFilterAttribute:ActionFilterAttribute { //加载“视图”前执行 public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Write("加载视图前执行OnResultExecuting<br/>"); base.OnResultExecuting(filterContext); } //加载“视图”后执行 public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.HttpContext.Response.Write("加载视图后执行OnResultExecuted<br/>"); base.OnResultExecuted(filterContext); } }
查看运行结果
4.授权过滤器
作用范围:在Action方法前
5.异常处理过滤器