理解 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之後執行.