HOW TO:根據參數快取使用者控制項的多個版本
更新:2007 年 11 月
有兩種方法可讓您變更使用者控制項輸出的快取:
指定使用者控制項名稱,以及查詢字串或表單 POST 參數。您可以使用 @ OutputCache 指示詞的 VaryByParam 屬性 (Attribute),以宣告方式進行此動作。此外,您也可以透過在使用者控制項的程式碼中設定 PartialCachingAttribute 的 VaryByParams 屬性 (Property),以程式設計的方式進行此動作。
指定內含在使用者控制項之 ASP.NET 伺服器控制項的 ID 屬性。您可以使用 VaryByControl 屬性,以宣告方式執行此動作。此外,也可以透過設定 PartialCachingAttribute 中的 VaryByControls 屬性,以程式設計的方式執行此動作。
注意事項: 根據查詢字串或表單 POST 參數變更快取之使用者控制項輸出的前提,是使用者控制項進行回傳,並自行處理回傳內容。如果使用者控制項回傳至包含此控制項的網頁,這種類型的使用者控制項輸出快取將無法正常運作。
若要使用 VaryByControl 屬性以宣告方式快取多個版本的使用者控制項
建立會進行回傳的使用者控制項。
將具有 Duration 和 VaryByControl 屬性的 @ OutputCache 指示詞包含在使用者控制項中。
注意事項: 如果在指示詞中使用 VaryByControl 屬性,您就不需再將 VaryByParam 屬性納入 (即使您可以將它加入並設為 "None")。
將 VaryByControl 屬性設定為您要據以變更使用者控制項輸出的控制項 ID。
例如,下列 @ OutputCache 指示詞會將使用者控制項的期限設為 60 秒,並依據 ID 為 State 的 ASP.NET 伺服器控制項變更控制項的輸出:
<%@ OutputCache Duration="60" VaryByControl="State" %>
若要使用 VaryByControls 屬性以程式設計方式快取多個版本的使用者控制項
在程式碼中,建立會回傳至本身的使用者控制項程式碼。
將 PartialCachingAttribute包含在使用者控制項程式碼的開頭。
納入 Duration 參數的值,並且將 VaryByControls 參數設定為在使用者控制項中,您要據以變更使用者控制項輸出之 ASP.NET 伺服器控制項的 ID。
下列程式碼範例會將 Duration 設為 60 秒,並將 VaryByControls 設為 State。加入此程式碼的位置應該在擴充 UserControl 類別的程式碼之前。
[PartialCaching(60, null, State, null)]
<PartialCaching(60, null, State, null)>
若要使用 VaryByParam 屬性以宣告方式快取多個版本的使用者控制項
建立回傳至自身的使用者控制項。
將具有 Duration 和 VaryByParam 屬性的 @ OutputCache 指示詞包含在使用者控制項中。
注意事項: 如果您在使用者控制項的 @ OutputCache 指示詞中包含 VaryByControl 屬性,就不需要再將 VaryByParam 屬性納入。
將 VaryByParam 屬性設為您想要據以變更使用者控制項的 GET 查詢字串或表單 POST 參數。
例如,下列 @ OutputCache 指示詞會將使用者控制項的期限設為 60 秒,並依據名為 State 的表單 POST 或查詢字串參數變更控制項的輸出。
<%@ OutputCache Duration="60" VaryByParam="State" %>
若要使用 VaryByParams 屬性以程式設計方式快取多個版本的使用者控制項
在程式碼中,建立會回傳至本身的使用者控制項程式碼。
將 PartialCachingAttribute包含在使用者控制項程式碼的開頭。
包含 Duration 參數的值,並將 VaryByParams 參數設為您要據以變更使用者控制項輸出的 GET 查詢字串或表單 POST 參數。
下列程式碼範例會將 Duration 設為 60 秒,並將 VaryByParams 設為名為 State 的表單 POST 或查詢字串參數。加入此程式碼的位置應該在擴充 UserControl 類別的程式碼之前。
[PartialCaching(60, State, null, null)]
<PartialCaching(60, State, null, null)>