ActionFilter是穿插在Action執行過程,在Action執行前后提供擴展的功能。ActionFilter用途非常的廣,用在頁面壓縮、緩存、錯誤處理,登陸驗證。
ActionFilter的實現需要繼承自ActionFilterAttribute抽象類,並且覆蓋需要使用的方法。
ActionFilterAttribute類中有四個可重的方法,分別是OnActionExecuting,OnActionExecuted,OnResultExecuting,OnResultExecuted。
這四個方法的執行順序是 OnActionExecuting->OnActionExecuted->OnResultExecuting->OnResultExecuted
實現步驟
1.先建立一個Filter文件夾,在里面新建一個類FilterDemo
代碼如下:
using System.Web.Mvc; namespace MvcApplication2.Filter { public class DemoFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpContext.Current.Response.Write("OnActionExecuting:正要准備執行Action的時候但還未執行時執行"); } public override void OnActionExecuted(ActionExecutedContext filterContext) { HttpContext.Current.Response.Write("OnActionExecuted:Action執行時但還未返回結果時執行"); } public override void OnResultExecuting(ResultExecutingContext filterContext) { HttpContext.Current.Response.Write("OnResultExecuting:OnResultExecuting也和OnActionExecuted一樣,但前者是在后者執行完后才執行"); } public override void OnResultExecuted(ResultExecutedContext filterContext) { HttpContext.Current.Response.Write("OnResultExecuted:是Action執行完后將要返回ActionResult的時候執行"); } } }
2.然后在Controller里,加上[DemoFilter]標記,則在執行這個Action的時候會先進入FilterDemo類里,執行里面的方法
[DemoFilter] public ActionResult FilterDemo() { return View(); }