Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using Telerik.Sitefinity.Data;
- using Telerik.Sitefinity.Services;
- using Telerik.Sitefinity.Web;
- namespace SitefinityWebApp.Websilk.CustomControls {
- public enum CacheLevel
- {
- NeverCache,
- ContentListener,
- AlwaysCache
- }
- public abstract class SitefinityUserControl : UserControl {
- protected abstract CacheLevel ControlCacheLevel {
- get;
- }
- protected virtual List<CacheDependencyKey> GetCacheDependencyObjects() {
- return null;
- }
- protected void SubsribeCacheDependency() {
- if (ControlCacheLevel == CacheLevel.ContentListener && !this.IsBackend()) {
- var cacheDependencyObjects = this.GetCacheDependencyObjects();
- if (cacheDependencyObjects != null) {
- if (!SystemManager.CurrentHttpContext.Items.Contains(PageCacheDependencyKeys.PageData)) {
- SystemManager.CurrentHttpContext.Items.Add(PageCacheDependencyKeys.PageData, new List<CacheDependencyKey>());
- }
- ((List<CacheDependencyKey>)SystemManager.CurrentHttpContext.Items[PageCacheDependencyKeys.PageData]).AddRange(cacheDependencyObjects);
- }
- }
- }
- protected virtual void Page_PreRender(object sender, EventArgs e) {
- if (ControlCacheLevel == CacheLevel.ContentListener) {
- SubsribeCacheDependency();
- } else if (ControlCacheLevel == CacheLevel.NeverCache) {
- Response.Cache.SetCacheability(HttpCacheability.NoCache);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment