ASP.NET MVC筆記 之 Action 過濾器
[2] 自定義過濾器
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屬性設定過濾器執行的順序。