ASP.NET MVC笔记 之 Action 过滤器
Action 过滤器在代码中体现为添加到Action上方的属性,MVC框架包含了一些过滤器,如:
OutputCache –指示Controller在指定时间内缓存返回的结果。
HandleError –处理Contrller中Action抛出的异常
Authorize – 约束特定用户或角色对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属性设定过滤器执行的顺序。