1

我想捕獲我的ASP.NET MVC 4.0網站的網站流量。 我這樣做ASP.NET MVC 4.0 GolbalFilter頁面請求

我的基本控制器:

public class BlogActionFilterAttribute : ActionFilterAttribute 
     { 
      public override void OnResultExecuting(ResultExecutingContext filterContext) 
      { 
       base.OnResultExecuting(filterContext); 
       BaseModels.StoreSessionData(filterContext); 
      } 
     } 

的Global.asax:

protected void Application_Start() 
     { 

      // Register global filter 
      GlobalFilters.Filters.Add(new BaseController.SiteActionFilterAttribute()); 
} 

到目前爲止,一切工作就不錯了。

如果我的動作視圖有任何渲染動作或動作助手,然後我的會話事件被存儲在我的數據庫另一個新的記錄,這是因爲我的全球過濾器是ActionFilterAttribute

如果一個頁面請求有多個動作,那麼我的會話事件將捕獲所有這些動作作爲事件。

如何限制我的過濾器在每個頁面請求上工作而不是Action和其子動作?

回答

0

如果我正確理解你,你想限制StoreSessionData的操作類型。我假設你想限制的這種類型是ChildActions。如果是這樣,這裏是你會怎麼做」

public class BlogActionFilterAttribute : ActionFilterAttribute 
     { 
      public override void OnResultExecuting(ResultExecutingContext filterContext) 
      { 
       base.OnResultExecuting(filterContext); 
       if (!filterContext.IsChildAction) 
        BaseModels.StoreSessionData(filterContext); 
      } 
     } 
+0

我相信,要求該方法被標記爲一個孩子的行動,不是嗎? –

+0

@MystereMan,是絕對不會。有沒有更明確的方式? –

+0

@MystereMan同樣的問題,有沒有更確定的方法?即使我沒有使用過子動作屬性。 – HaBo