MVC過濾器之結果過濾器
阿新 • • 發佈:2018-12-03
結果過濾器屬性提供了兩個事件會在執行檢視(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"); }