Stephen2

SitefinityUserControl

Feb 22nd, 2014
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.73 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using Telerik.Sitefinity.Data;
  7. using Telerik.Sitefinity.Services;
  8. using Telerik.Sitefinity.Web;
  9.  
  10. namespace SitefinityWebApp.Websilk.CustomControls {
  11.     public enum CacheLevel
  12.     {
  13.         NeverCache,
  14.         ContentListener,
  15.         AlwaysCache
  16.     }
  17.  
  18.     public abstract class SitefinityUserControl : UserControl {
  19.         protected abstract CacheLevel ControlCacheLevel {
  20.             get;
  21.         }
  22.  
  23.         protected virtual List<CacheDependencyKey> GetCacheDependencyObjects() {
  24.             return null;
  25.         }
  26.  
  27.         protected void SubsribeCacheDependency() {
  28.             if (ControlCacheLevel == CacheLevel.ContentListener && !this.IsBackend()) {
  29.                 var cacheDependencyObjects = this.GetCacheDependencyObjects();
  30.  
  31.                 if (cacheDependencyObjects != null) {
  32.                     if (!SystemManager.CurrentHttpContext.Items.Contains(PageCacheDependencyKeys.PageData)) {
  33.                         SystemManager.CurrentHttpContext.Items.Add(PageCacheDependencyKeys.PageData, new List<CacheDependencyKey>());
  34.                     }
  35.  
  36.                     ((List<CacheDependencyKey>)SystemManager.CurrentHttpContext.Items[PageCacheDependencyKeys.PageData]).AddRange(cacheDependencyObjects);
  37.                 }
  38.             }
  39.         }
  40.  
  41.         protected virtual void Page_PreRender(object sender, EventArgs e) {
  42.             if (ControlCacheLevel == CacheLevel.ContentListener) {
  43.                 SubsribeCacheDependency();
  44.             } else if (ControlCacheLevel == CacheLevel.NeverCache) {
  45.                 Response.Cache.SetCacheability(HttpCacheability.NoCache);
  46.             }
  47.         }
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment