首页 > 代码库 > 过滤器

过滤器

1. 四种过滤器(面向切面编程)。

(1)Action过滤器、Result过滤器、AuthorizationFilter过滤器、Exception过滤器;

(2)执行先后顺序:AuthorizationFilter->Action->Result;

(3)Exception过滤器为全局过滤器;

2. Action过滤器(加载Action方法前后调用)的用法

(1)处理当前方法的过滤器;

(2)处理当前类的过滤器;

(3)全局过滤器;

3. Result过滤器:加载View视图前后调用。

4. filterContext上下文对象

(1)Route中保存了当前请求的路由信息和路由对象,如果本次请求是请求了某个区域里的控制方法,还可以通过 filterContext.RouteData.DataTokens["area"] 获取区域名称。

//string strAction = filterContext.RouteData.Values["action"].ToString();

string strController = filterContext.RouteData.Values["controller"].ToString();

string strArea = filterContext.RouteData.DataTokens["area"].ToString();

(2)另一种方式获取请求的类名的方法名

string strAction2 = filterContext.ActionDescriptor.ActionName;

string strController2=

filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;

(3)检查被请求方法是否加了MoneyAttribute特性(可以用作权限验证操作等)

if (filterContext.ActionDescriptor.IsDefined(typeof(Filters.MoneyAttribute), false))

            {

                filterContext.Result = new ContentResult { Content="跳过!"};

            }

5. AuthorizationFilter过滤器(授权过滤器)

*请求管道事件注册方法机制:方法命名规则,Application_ResolveRequestCache(Application_事件名称),请求管道自动将该方法注册到该事件。

Global.asax的使用。

6. Exception过滤器(全局异常处理类)

过滤器