예제 #1
0
        protected override void SavePageStateToPersistenceMedium(object state)
        {
            Pair pair;
            PageStatePersister persister = this.PageStatePersister;
            object             viewState;

            if (state is Pair)
            {
                pair = (Pair)state;
                persister.ControlState = pair.First;
                viewState = pair.Second;
            }
            else
            {
                viewState = state;
            }

            LosFormatter formatter = new LosFormatter();
            StringWriter writer    = new StringWriter();

            formatter.Serialize(writer, viewState);
            string viewStateStr = writer.ToString();

            byte[] data           = Convert.FromBase64String(viewStateStr);
            byte[] compressedData = zipHelper.Compress(data);
            string str            = Convert.ToBase64String(compressedData);

            persister.ViewState = str;
            persister.Save();
        }
예제 #2
0
 private void EnsurePageStatePersister()
 {
     if (_pageStatePersister == null)
     {
         _pageStatePersister = new HiddenFieldPageStatePersister(this);
     }
 }
예제 #3
0
        private void InnerSavePageStateToPersistenceMedium(object state)
        {
            ViewStatePersistSettings settings = ViewStatePersistSettings.GetConfig();

            if (settings.Enabled)
            {
                PageStatePersister persister = settings.Persister;

                if (state is Pair)
                {
                    Pair statePair = (Pair)state;

                    persister.ControlState = statePair.First;
                    persister.ViewState    = statePair.Second;
                }
                else
                {
                    persister.ViewState = state;
                }

                persister.Save();

                this.PageStatePersister.ViewState    = persister.ViewState;
                this.PageStatePersister.ControlState = persister.ControlState;

                this.PageStatePersister.Save();
            }
            else
            {
                base.SavePageStateToPersistenceMedium(state);
            }
        }
예제 #4
0
        private object InnerLoadPageStateFromPersistenceMedium()
        {
            object result = null;

            ViewStatePersistSettings settings = ViewStatePersistSettings.GetConfig();

            try
            {
                if (settings.Enabled)
                {
                    PageStatePersister persister = settings.Persister;

                    this.PageStatePersister.Load();
                    persister.Load();

                    result = new Pair(persister.ControlState, persister.ViewState);
                }
                else
                {
                    result = base.LoadPageStateFromPersistenceMedium();
                }
            }
            catch (System.Web.HttpException)
            {
                if (Page.IsCallback == false)
                {
                    throw;
                }
            }

            return(result);
        }
        public void Control_RestoreChildControlState_EnsureBeforeLoadAllState()
        {
            Page_Init_Load_Add_Ensure_SaveAllState("Parent Value", "Child Value", null);
            PageStatePersister pageStatePersisterBackup = Page.GetPageStatePersister();

            TearDownPage();
            SetUpPage();

            Page.RegisterViewStateHandler();
            Page.SetRequestValueCollection(new NameValueCollection());
            NamingContainerInvoker.InitRecursive();
            Page.SetPageStatePersister(pageStatePersisterBackup);
            Page.LoadAllState();
            NamingContainerInvoker.LoadRecursive();
            _lazyContainer.RealControls.Add(_parent);
            Page.SaveAllState();

            pageStatePersisterBackup = Page.GetPageStatePersister();

            Assert.That(pageStatePersisterBackup.ControlState is IDictionary, Is.True);
            IDictionary controlStates = (IDictionary)pageStatePersisterBackup.ControlState;

            Assert.That(controlStates.Count, Is.EqualTo(1));
            Assert.That(controlStates.Contains(_lazyContainer.UniqueID), Is.True);

            TearDownPage();
            SetUpPage();

            Page.SetRequestValueCollection(new NameValueCollection());
            _lazyContainer.Ensure();
        }
예제 #6
0
        public void GetStatePersister()
        {
            PageStatePersister persister = mpa.GetStatePersister();

            Assert.AreEqual(typeof(HiddenFieldPageStatePersister),
                            persister.GetType(), "GetStatePersister #1");
        }
예제 #7
0
        protected override Object LoadPageStateFromPersistenceMedium()
        {
            PageStatePersister persister = this.PageStatePersister;

            persister.Load();
            string viewState = persister.ViewState.ToString();

            return(new Pair(persister.ControlState, VeiwStateSerialize.Deserialize(viewState)));
        }
예제 #8
0
        /// <summary>
        /// 取出ViewState对象
        /// </summary>
        /// <returns></returns>
        protected override object LoadPageStateFromPersistenceMedium()
        {
            PageStatePersister ps = this.PageStatePersister;

            ps.Load();
            if (ps.ControlState != null)
            {
                ps.ControlState = DeserializeObj((string)ps.ControlState);
            }
            if (ps.ViewState != null)
            {
                ps.ViewState = DeserializeObj((string)ps.ViewState);
            }
            return(new Pair(ps.ControlState, ps.ViewState));
        }
예제 #9
0
        protected override object LoadPageStateFromPersistenceMedium()
        {
            PageStatePersister persister = this.PageStatePersister;

            persister.Load();

            string viewState = persister.ViewState.ToString();

            byte[]       data             = Convert.FromBase64String(viewState);
            byte[]       uncompressedData = zipHelper.DeCompress(data);
            string       str       = Convert.ToBase64String(uncompressedData);
            LosFormatter formatter = new LosFormatter();

            return(new Pair(persister.ControlState, formatter.Deserialize(str)));
        }
예제 #10
0
        /// <remarks> Uses <see cref="WxePageInfo.LoadPageStateFromPersistenceMedium"/> to load the viewstate. </remarks>
        protected override object LoadPageStateFromPersistenceMedium()
        {
            object             state     = _wxePageInfo.LoadPageStateFromPersistenceMedium();
            PageStatePersister persister = this.PageStatePersister;

            if (state is Pair)
            {
                Pair pair = (Pair)state;
                persister.ControlState = pair.First;
                persister.ViewState    = pair.Second;
            }
            else
            {
                persister.ViewState = state;
            }

            return(state);
        }
예제 #11
0
        protected override void SavePageStateToPersistenceMedium(Object pViewState)
        {
            Pair               pair;
            object             viewState;
            PageStatePersister persister = this.PageStatePersister;

            if (pViewState is Pair)
            {
                pair = (Pair)pViewState;
                persister.ControlState = pair.First;
                viewState = pair.Second;
            }
            else
            {
                viewState = pViewState;
            }
            persister.ViewState = VeiwStateSerialize.Serialize(viewState);
            persister.Save();
        }
        public void Control_BackUpChildControlState()
        {
            Page_Init_Load_Add_Ensure_SaveAllState("Parent Value", "Child Value", null);
            PageStatePersister pageStatePersisterBackup = Page.GetPageStatePersister();

            Dictionary <string, object> expectedControlStates = new Dictionary <string, object> ();

            expectedControlStates[_parent.UniqueID] = _parentInvoker.SaveControlStateInternal();
            expectedControlStates[_child.UniqueID]  = _childInvoker.SaveControlStateInternal();

            TearDownPage();
            SetUpPage();

            Page.SetRequestValueCollection(new NameValueCollection());
            NamingContainerInvoker.InitRecursive();
            Page.SetPageStatePersister(pageStatePersisterBackup);
            Page.LoadAllState();
            NamingContainerInvoker.LoadRecursive();
            _lazyContainer.RealControls.Add(_parent);

            object controlState = _lazyContainerInvoker.SaveControlState();

            Assert.That(controlState is Triplet, Is.True);
            Triplet values = (Triplet)controlState;

            Assert.IsInstanceOf((typeof(HybridDictionary)), values.Third);
            IDictionary actualControlStates = (IDictionary)values.Third;

            Assert.That(actualControlStates.Count, Is.EqualTo(2));

            foreach (string expectedKey in expectedControlStates.Keys)
            {
                Pair expectedValues = (Pair)expectedControlStates[expectedKey];

                object actualControlState = actualControlStates[expectedKey];
                Assert.That(actualControlState is Pair, Is.True);
                Pair actualValues = (Pair)actualControlState;
                Assert.AreEqual(expectedValues.First, actualValues.First, expectedKey);
                Assert.AreEqual(expectedValues.Second, actualValues.Second, expectedKey);
            }
        }
예제 #13
0
        private PageStatePersister GetPersister()
        {
            ContentSettings    defaultSettings = null;
            PageStatePersister persister       = null;
            ViewStatePersister ncachePersister;

            Alachisoft.ContentOptimization.Caching.Expiration expiration;

            string relativeUrl = Page.AppRelativeVirtualPath.Replace("~/", "");

            defaultSettings = GetDefaultSettings();

            if (defaultSettings != null)
            {
                expiration = defaultSettings.CacheSettings.Expiration.Convert(Alachisoft.ContentOptimization.Caching.ExpirationType.Sliding);

                ncachePersister = new ViewStatePersister(Page, cache, FileBasedTraceProvider.Current);

                persister = ncachePersister;
            }
            return(persister);
        }
        public void Control_Init_Add_LoadAllState_Ensure()
        {
            Page_Init_Load_Add_Ensure_SaveAllState("Parent Value", "Child Value", null);
            PageStatePersister pageStatePersisterBackup = Page.GetPageStatePersister();

            TearDownPage();
            SetUpPage();

            Page.SetRequestValueCollection(new NameValueCollection());
            NamingContainerInvoker.InitRecursive();
            Page.SetPageStatePersister(pageStatePersisterBackup);
            Page.LoadAllState();
            _lazyContainer.RealControls.Add(_parent);

            Assert.That(_parent.ValueInControlState, Is.Null);
            Assert.That(_child.ValueInControlState, Is.Null);
            Assert.That(_childSecond.ValueInControlState, Is.Null);

            _lazyContainer.Ensure();

            Assert.That(_parent.ValueInControlState, Is.EqualTo("Parent Value"));
            Assert.That(_child.ValueInControlState, Is.EqualTo("Child Value"));
            Assert.That(_childSecond.ValueInControlState, Is.Null);
        }
예제 #15
0
        /// <summary>
        /// 存入ViewState对象
        /// </summary>
        /// <param name="state"></param>
        protected override void SavePageStateToPersistenceMedium(object state)
        {
            PageStatePersister ps = this.PageStatePersister;

            if (state is Pair)
            {
                Pair pair = (Pair)state;
                ps.ControlState = pair.First;
                ps.ViewState    = pair.Second;
            }
            else
            {
                ps.ViewState = state;
            }
            if (ps.ControlState != null)
            {
                ps.ControlState = SerializeObj(ps.ControlState);
            }
            if (ps.ViewState != null)
            {
                ps.ViewState = SerializeObj(ps.ViewState);
            }
            ps.Save();
        }
예제 #16
0
        public void SetPageStatePersister(PageStatePersister pageStatePersister)
        {
            ArgumentUtility.CheckNotNull("pageStatePersister", pageStatePersister);

            _pageStatePersister = pageStatePersister;
        }
 public ViewStatePageStatePersister(Page page, PageStatePersister innerPageStatePersister)
     : base(page)
 {
     Logger = GlimpseConfiguration.GetLogger();
     InnerPageStatePersister = innerPageStatePersister;
 }