首页 / 网页编程 / ASP.NET / ASP.NET MVC笔记之Action过滤器
ASP.NET MVC笔记之Action过滤器2011-08-01 博客园 JohnhormyAction 过滤器在代码中体现为添加到Action上方的属性,MVC框架包含了一些过滤器,如:OutputCache –指示Controller在指定时间内缓存返回的结果。HandleError –处理Contrller中Action抛出的异常Authorize – 约束特定用户或角色对Action的访问另外你还可以自己定义过滤器,比如:你想使用自定义的验证机制;你想修改Action返回的数据等等 。使用Action 过滤器Action 过滤器不仅可以控制单个Action,也可以控制整个Contrller。同时,一个Action可以应用多 个过滤器。比如:public class DataController : Controller
{
[OutputCache(Duration=10)]
public string Index()
{
return DateTime.Now.ToString("T");
}
}这个Action返回了当前时间,但是你若在10秒钟内刷新界面,你会一直得到同一个值,因为这里使用 了OutputCache(Duration=10)。过滤器的类型ASP.NET MVC 框架支持以下几种过滤器:1、Authorization 过滤器– 实现了 IAuthorizationFilter 接口。这一类的过滤器用来实现用户验 证和对Action的访问授权。比如Authorize 就属于Authorization 过滤器。2、Action 过滤器– 实现了 IActionFilter 接口。它可以包含一些Action执行前或者执行后的逻辑 ,比如有一些过滤器专门用来修改Action返回的数据。3、Result 过滤器– 实现了 IResultFilter 接口。它可以包含一些view result生成前或者生成后的 逻辑,比如有一些过滤器专门用来修改视图向浏览器展现前的结果。4、Exception 过滤器– 实现了IExceptionFilter 接口。它用以用来处理Action或者Result的错误 ,也可以记录错误。过滤器的默认执行顺序也和上面的列表相同,比如Authorization 过滤器会先于Action 过滤器执行, 而Exception 过滤器总会在最后执行。当然你也可以根据需要通过Order属性设定过滤器执行的顺序。自定义过滤器自定义过滤器必须继承System.Web.Mvc.FilterAttribute ,并且实现上述几个接口中的一个或者多个 。MVC框架为了方便开发人员,预定义了一个ActionFilterAttribute 类,它已实现了IActionFilter 和 IResultFilter 接口。你可以重载ActionFilterAttribute 类中以下几个方法:OnActionExecuting – 在Action执行之前调用。OnActionExecuted – 在Action执行之后调用。OnResultExecuting – 在Result产生之前调用。OnResultExecuted – 在Result产生之前调用。