1. 程式人生 > >MVC過濾器之結果過濾器

MVC過濾器之結果過濾器

結果過濾器屬性提供了兩個事件會在執行檢視(ActionResult,ExecutrResult)的前後執行,分別是OnResultExecuting與OnResultExecuted事件,屬性類別實作IResultFilter介面會被要求必須實作這兩個方法。

由於從Action回傳的ActionResult一定有個ExecuteResult方法用來執行檢視的結果,所以,通過這個過濾器可以在執行之前整理一些資訊給ActionResult使用,或在執行之後對結果進行,最常見的例子就是實作輸出快取機制,Asp.net MVC 內建的屬性有OutPutCache屬性。

來個例項:

以下是演示將Guest這個Action 的輸出結果快取120秒:

  [OutputCache(Duration = 120, VaryByCustom = "CityChannel")]
        public ActionResult Guest()
        {
            mytestContext db = new mytestContext();
            guests guest = db.guests.FirstOrDefault();
            
            return View();
            //return RedirectPermanent("/guests/chishi");
           
        }

假設你在Web.config的<system.web> 下有以下快取配置檔案:

<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="HomePageProfile" duration="60"  VaryByParam="none">
</outputCacheProfiles>
</outputCacheSettings>
</caching>

就可以在Action 套用以下屬性:

[OutputCache(CacheProfile = "HomePageProfile")]
        public ActionResult Guest()
        {
            mytestContext db = new mytestContext();
            guests guest = db.guests.FirstOrDefault();
            
            return View();
            //return RedirectPermanent("/guests/chishi");
           
        }