ASP.NET MVC- ActionFilter的使用


  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();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM