Welcome 微信登录

首页 / 网页编程 / ASP.NET / Action Filters以及自定义OutputCache ActionFilterAttribute事件发生次序

Action Filters以及自定义OutputCache ActionFilterAttribute事件发生次序2013-11-28理解 Action Filters

Action filter 是能够应用于 controller action --或整个controller的一个特性,它们的基类为System.Web.Mvc.FilterAttribute 。它限定了action执行的方式。ASP.NET MVC框架包含数个action filters。

HandleError – 这个action 过滤器处理controller action执行时出现的错误。

OutputCache – 这个action 过滤器将 controller action的输出缓存一段制定的时间 .

Authorize – 这个action 过滤器使你能够限制特定的用户或角色的访问.

使用Action Filter

action filter是一个特性. 你能够应用大部分的action filters 在单个的controller action 或者整个controller上.

例如下面的Data controller有一个返回当前时间的Index()方法.这个action拥有OutputCache action filter. 这个过滤器导致由action返回的值能够缓存10秒钟.

VaryByParam 属性使用的设置不建议通过设置“*”的值来使用所有参数进行区分。这可能会导致缓存溢出。

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class DataController : Controller{//// GET: /Data/[OutputCache(Duration = 20,VaryByParam ="")]public string Index(){return DateTime.Now.ToString();}}
如果你重复调用Index() action(不断刷新当前页面), 那么你将看到当前的内容在Duration = 20秒内是不变的.

一个单一的action filter –  OutputCache action filter – 被应用于Index() 方法. 同样,你可以应用多个action filters 在同一个action上.

不同类型的Filters

ASP.NET MVC框架支持多种不同类型的过滤器:

Authorization filters – 实现IAuthorizationFilter 特性.

Action filters – 实现IActionFilter 特性.

Result filters – 实现IResultFilter 特性.

Exception filters –实现IExceptionFilter 特性.

Filters 按照上面列出的顺序执行。例如, authorization filters 总是在action filters之前执行,exception filters在所有其他类型的filter之后执行.