标签:
在ASP.NET MVC中有个重要特性就是过滤器,使得我们在MVC程序开发中更好的控制浏览器请求的URL,不是每个请求都有响应内容,只有特定得用户才有。园子里关于过滤器的资料也有很多,这篇文章主要是记录自己的学习。
类型 | 接口 | 默认实现 | 执行时间 | 描述 |
Action | IActionFilter | ActionFilterAttribute | 用于进入行为之前或之后的处理 | 方法过滤器 |
Result | IResultFilter | ActionFilterAttribute | 用于返回结果的之前或之后的处理 | 结果过滤器 |
Exception | IExceptionFilter |
AuthorizeAttribute |
用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常 | 异常过滤器 |
Authentication | IAuthorizationFilter |
HandleErrorAttribute |
此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法 | 授权过滤器 |
public abstract class ActionFilterAttribute : FilterAttribute, IActionFilter, IResultFilter { protected ActionFilterAttribute(); public virtual void OnActionExecuted(ActionExecutedContext filterContext); public virtual void OnActionExecuting(ActionExecutingContext filterContext); public virtual void OnResultExecuted(ResultExecutedContext filterContext); public virtual void OnResultExecuting(ResultExecutingContext filterContext); }
MyActionFilter.cs
public class MyActionFilter : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { filterContext.HttpContext.Response.Write("在Action执行前执行"); base.OnActionExecuted(filterContext); } public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.HttpContext.Response.Write("在Action执行后执行"); base.OnActionExecuting(filterContext); } }
过滤器可以加在三个地方,第一是控制器上面(可限制控制器下面所有的Action),第二是Action上面(限制指定的Action),第三是全局的过滤器(限制所有的Action)。
2. Action上面
3. 全局过滤器
在ASP.NET MVC项目中的App_Start下新建类FilterConfig,添加静态方法RegisterGlobalFilters。
在Global中注册RegisterGlobalFilters方法
标签:
原文地址:http://www.cnblogs.com/liujie2272/p/5363082.html