2010-05-11 25 views
1

這裏是我的控件的代碼背後:高速緩存Web用戶控件的歡迎使用屬性不工作(!GRR)

<PartialCaching(60, Nothing, "UsrCtl_WebUserControl.CacheString", Nothing, True)> _ 
Partial Class UsrCtl_WebUserControl 
Inherits System.Web.UI.UserControl 

Private _CacheString As String 

Public Property CacheString() As String 
    Get 
    Return _CacheString 
    End Get 
    Set(ByVal value As String) 
    _CacheString = value 
    End Set 
End Property 
End Class 

這裏的控件的標記:

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="WebUserControl.ascx.vb" Inherits="UsrCtl_WebUserControl" %> 
<span>Control Generated <%=DateTime.Now%></span> 

它只是輸出電流的時間。

這裏是嵌入到網頁中的用戶控件:

<uc:wuc ID="wuc" runat="server" CacheString="A" /> 

而在另一頁:

<uc:wuc ID="wuc" runat="server" CacheString="B" /> 

按照文檔這種控制應該保持不同,60秒緩存版本爲每個值的CacheString屬性。

它不起作用 - 它緩存了60秒,但只有一個緩存副本被創建,無論我放入CacheString屬性。

任何任何想法我做錯了什麼? - 4小時後,我沒有頭髮或指甲留下 - 請將我的顯示器從磚頭上取下。

回答

1

確定它帶我一會兒,但我只是複製你的問題。當兩個控件在PartialCaching屬性的構造函數中的多個頁面之間具有相同的ID時,問題就會出現,您將Shared設置爲True。根據文檔here,構造函數中的Shared屬性爲'true',表示用戶控件輸出可以與多個頁面共享',這意味着,正如您所看到的,第一個要加載的控件設置它並且隨後的控件可以只讀已有的內容。在封面之下,似乎控件僅基於控件的ID進行緩存,而不考慮控件所在的頁面。

所以,有兩種可能的解決方案:

  • 更改 頁面
  • 在PartialCaching構造上的控件的ID, 設置共享爲false。
+0

菲爾嗨, 謝謝,但如果你看過我的問題,你會看到我使用不同的頁面上的控制,而不是在同一頁上。 我需要共享=「真」,因爲這是爲了緩存頁面頁腳 - 頁面頁腳緩慢頁面頁腳! 我看不出我做錯了什麼。謝謝你的嘗試! – PapillonUK 2010-05-11 14:37:16

+0

@PapillonUK在兩個單獨頁面上的相同控件是我如何複製它的,但現在我有點困惑 - 你希望它們在每一頁上單獨緩存,但它們都在一個通用頁腳中?你能把你的頁面標記放到你的問題中嗎?我的演示代碼是http://cid-5e6d39865220496a.skydrive.live.com/self.aspx/StackOverflow/PartialCaching.zip – PhilPursglove 2010-05-11 15:16:04

+1

所有的代碼都在上面,我現在添加了控件的標記 - 它只顯示當前時間。這不是完整的代碼,我拿出一切,但裸露的分鐘。 我打算使用控件來緩存我網站上許多頁面上的頁腳區域。除了我公開的作爲控件屬性的一個小方面外,頁腳區域在所有頁面上都是相同的 - 因此需要通過屬性更改緩存。 嘗試在不同的頁面上使用不同的ID - 同樣的問題。不管指定的屬性值如何,緩存60秒但只有一個緩存版本。 – PapillonUK 2010-05-11 19:59:10