2010-04-15 45 views
7

我想爲我將支持的VaryByCustom參數類型使用Enum值,是否可以這樣做?以編程方式設置頁面輸出緩存VaryByCustom的值

我試着將它設置在頁面本身

<%@ OutputCache Duration="600" VaryByParam="none" 
      VaryByCustom='<%=VaryByCustomType.IsAuthenticated.ToString(); %>' %> 

但這返回整個文本字符串"<%=VaryByCustomType.IsAuthenticated.ToString(); %>"global.asax裏面有沒有辦法做到這一點無論是頁面本身還是從代碼隱藏呢?或者,這只是我必須接受的純粹的魔術絃樂,而我無法爲其添加類型安全嗎?

回答

8

而不是使用@Outputcache指令,嘗試使用頁面中的代碼。例如

void Page_Init() { 
    var outputCacheSettings = new OutputCacheParameters() { 
     Duration = 600, 
     VaryByCustom = VaryByCustomType.IsAuthenticated.ToString() 
    }; 
    InitOutputCache(outputCacheSettings); 
} 
+0

這看起來像我一直在尋找然而看着http://msdn.microsoft.com/en-us/library/ms153473.aspx它在言論不使用此方法,任何機會答案你有什麼知識,爲什麼MSDN會說,但仍然暴露此方法?或者它有什麼影響來自己調用它? – 2010-04-27 21:11:21

+0

坦率地說,這是過時的文檔,可以追溯到2.0天,從未更新過。這實際上是您在使用該指令時爲您生成的調用。 作爲一種替代方法,您也可以使用此線程中描述的技術:http://stackoverflow.com/questions/1043112/programatically-control-output-caching-disable-or-enable-cache-according-to-par – 2010-04-28 00:14:49

+0

非常感謝大衛! – 2010-04-29 13:02:56

相關問題