2010-04-18 52 views
2

我剛剛將我的網站從ASP.NET 3.5升級到4.0。我一直在通過一些突破性的改變,並且超出了我的預期。爲什麼我的asp:Substitution控件突然在ASP.NET 4.0中不起作用?

然而,我不明白爲什麼我的<asp:Substitution />控制突然停止工作,因爲它應該。它應該忽略父頁面的輸出緩存設置,並根據每個請求進行更新。出於某種原因,沒有發生。它的整個10分鐘緩存(我的主頁的OutputCache設置)。有任何想法嗎?

回答

2

< asp:替代>和其他服務器控件在MVC中不受支持。特別是響應替換與WebForms管道錯綜複雜。它在MVC 1中工作的事實是一個令人高興的事故,但並不是故意的。 MVC團隊正在研究如何在MVC 3和更高版本中啓用替換緩存,但是可能會有MVC特定的機制來執行此操作,因此您不應該期望使用< asp:替換>或Response.WriteSubstitution( )繼續前進。同時,最好的選擇是輸出緩存整個頁面,然後使用Javascript/AJAX讓客戶端填寫需要更新的部分。

+0

謝謝Levi。我發現了另一個解決方法。我改變了我的策略,因爲只有頁面的一部分受益於緩存。事實證明,如果將它添加到頁面中,就像它是Web窗體控件一樣,可以在部分視圖上使用OutputCache指令... http://www.highoncoding.com/Articles/638_Understanding_Partial_Views_in_ASP_NET_MVC_Application.aspx – 2010-04-18 15:20:06

+0

I避免在.ascx上使用<%@ OutputCache%>,因爲它也是一個醜陋的黑客攻擊,無法保證繼續工作(就像替換緩存被破壞一樣)。如果您只需要緩存頁面的一部分,請考慮使用MVC Futures for ASP.NET 4的[ChildActionCache]屬性(http://aspnet.codeplex.com/releases/view/41742)。此屬性可以應用於作爲Html.RenderAction()的目標的方法,並且該RenderAction()的內容將在指定的時間段內被緩存。 – Levi 2010-04-18 23:21:56