Mini Kabibi Habibi

Current Path : C:/Program Files (x86)/DevExpress/DXperience 13.1/Tools/ASP.NET/Site/App_Code/
Upload File :
Current File : C:/Program Files (x86)/DevExpress/DXperience 13.1/Tools/ASP.NET/Site/App_Code/BasePage.cs

using System;
using System.Web.UI;
using DevExpress.Web.ASPxClasses;
using DevExpress.Web.ASPxPanel;

namespace ASPxThemeBuilderSite {
    public class BasePage: Page {
        public string GetASPxCounterpartUrl() {
            string counterpart = string.Empty;
            string[] urlParts = Request.Url.AbsoluteUri.Split('/');
            if(urlParts.Length > 0)
                counterpart = urlParts[urlParts.Length - 1].Replace(".aspx", "").Replace("MVCx", "");
            return !string.IsNullOrEmpty(counterpart) ? "#?Redirect=" + counterpart : "#";
        }

        public void ShowOptions() {
            Master.FindControl("OptionContainer").Visible = true;
        }

        protected ASPxPanel RtlContainer {
            get { return Master.FindControl("RtlContaniner") as ASPxPanel; }
        }

        protected override void OnInit(EventArgs e) {
            base.OnInit(e);
            if(!IsPostBack)
                LoadOptions();
        }
        protected override void OnLoad(EventArgs e) {
            base.OnLoad(e);
            ASPxWebControl.RegisterBaseScript(this);
        }
        protected override void OnPreRender(EventArgs e) {
            base.OnPreRender(e);
            SaveOptions();
        }

        protected virtual void LoadOptions() { 
        }
        protected virtual void SaveOptions() {
        }

        protected void LoadOption<T>(string name, Action<T> setValue, T defaultValue) {
            object value = Application.Contents[GetCacheKey(name)];
            setValue(value != null ? (T)value : defaultValue);
        }
        protected void SaveOption<T>(string name, Func<T> getValue) {
            Application.Contents[GetCacheKey(name)] = getValue();
        }
        string GetCacheKey(string optionName) {
            string[] urlParts = Request.Url.AbsoluteUri.Split('/');
            if(urlParts.Length > 0)
                return urlParts[urlParts.Length - 1] + "_" + optionName;
            return optionName;
        }
    }
}