2010-06-12 79 views
1

這件事讓我發瘋。我有一個稱爲WebUserControl的UserControl。ASP.NET用戶控件緩存

我需要緩存這個控件,所以我把在WebUserControl.ascx如下:

<%@ OutputCache Duration="240" VaryByParam="FeedName" %> 

然後我有,我有Default.aspx文件:

 <div class="divInnerLeft" id="L1" runat="server"> 
      <uc1:WebUserControl FeedId="a1" ID="a1" runat="server" FeedName=""/> 
     </div> 
     <div class="divInnerMiddle" id="M1" runat="server"> 
      <uc1:WebUserControl FeedId="a3" ID="a3" runat="server" FeedName=""/> 
     </div> 

在根據用戶首選項設置FeedName屬性的Page_Load事件。

問題是,在最初加載頁面後,控件生成OK。但是,在Page_Load事件中,它們不再可用。所以a1和a3是空的,我不能爲不同的用戶設置FeedName。

如何解決這個問題?

謝謝!

+0

RPM1984:Thaks的提示。我想要實現的是讓我們在頁面上說出四個UserControl。當頁面加載時,我爲用戶控件設置了一些參數,並且顯示的控件是給定參數的緩存控件。 該VaryByContol也沒有幫助:( – Adam 2010-06-16 21:32:49

+0

好吧 - 我明白你現在要做的。看看這個類似的SO問題:http://stackoverflow.com/questions/880937/vary-by-control-properties -using-partial-cache-in-asp-net。 – RPM1984 2010-06-17 01:16:36

+0

非常感謝!!!!!!!!!!! – Adam 2010-06-17 16:28:46

回答

3

你意識到的VaryByParam會在的OutputCacheHTTP GET/POST查詢字符串設置每個不同parmateter一個新條目。

設置FeedName用戶控件引用上的屬性不會改變用戶控件的緩存。

你究竟想在這裏實現高速緩存究竟是什麼?

我想你要找的是VaryByControl