這個需求就可以利用ActionFilterAttribute來完成,首先先看下面進如Action的簡易流程示意圖 :
圖片出處
圖中說明當在進入Controller 的Action前會先經過Filter.OnActionExcuting,在Action結束後也會經過Filter.OnActionExecuted方法,因此我們就可以在不影響Action本身邏輯的情況下,做到紀錄的功能,這也是AOP的觀念。
作法 :
1.新增一個Class繼承 ActionFilterAttributte,接著實做OnActionexecutxxxx的方法即可
2.簡易範例如下 :
public class SearchLogAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); // 讀取搜尋資訊 string controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; var param = filterContext.ActionParameters; // TODO 存取紀錄 } }
沒有留言:
張貼留言