2012-09-12 85 views
0

我們有一個網站,所有頁面輸出緩存,即緩存是與aspx級別VaryByParam =「*」。現在有一個要求做一個蓋洛普控制,即一個小的「這個網站如何爲你工作?」然後當用戶點擊答案時,結果會顯示出來。Asp.net輸出緩存替換與用戶控件中的回發

該gallup被實現爲一個usercontrol,它被添加到master頁面,所以gallups可以被添加到cms中創建gallup的任何頁面。問題在於輸出緩存自然會緩存所有點擊,因此當用戶沒有2票時,他會看到在該替代方案的第一次投票後計算的結果。

現在我試圖使用緩存替換。我添加了一個asp:Substition標籤,其中用戶控件曾經是,動態加載控件並呈現它(使用此方法http://coderwall.com/p/4ajzqq)。問題是投票觸發器的回發從未被解僱。顯然,替換控件執行的方法在頁面生命週期之外加載或太晚。

任何想法?

問候, 的Mathias

回答

2

我解決了這個通過跳過替代控制,只是使用的用戶控制爲正常,所以蓋洛普/問題的觀點是輸出緩存。然後在答案替代方案的點擊處理程序中,我添加了 Response.Cache.SetNoServerCaching(); ,它從輸出緩存中免除了結果視圖,因此它已更新,因爲它應該如此。

0

也可以在Global.asax中使用Response.Cache.SetNoServerCaching(),使用VaryByCustom。它只需要在Global.asax中檢測頁面是否回傳。 Here是一個代碼示例。