2010-04-15 3 views
7

Я хочу использовать значение Enum для типов параметров VaryByCustom, которые я поддержу, возможно ли это сделать?Set Page Output Cache VaryByCustom value программно

Я попытался установить его в самой странице

<%@ 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 скажет, что все еще разоблачает этот метод? Или какие последствия он должен сам использовать? –

+0

Честно говоря, это устаревшая документация, которая датируется с 2.0 дней и никогда не обновлялась. Это фактически вызов, который генерируется для вас, когда вы используете директиву. В качестве альтернативы вы также можете использовать технику, описанную в этой теме: http://stackoverflow.com/questions/1043112/programatically-control-output-caching-disable-or-enable-cache-according-to-par –

+0

Спасибо, Дэвид! –