Example #1
0
    /// <summary>
    /// Returns an object that is used by the Web page to maintain the control and view states.
    /// </summary>
    /// <returns>
    /// An object derived from <see cref="T:System.Web.UI.PageStatePersister"/> that supports creating and extracting the
    /// combined control and view states for the <see cref="T:System.Web.UI.Page"/>.
    /// </returns>
    public override PageStatePersister GetStatePersister()
    {
        PageViewStateStorageAttribute psa =
            Attribute.GetCustomAttribute(this.Page.GetType(), typeof(PageViewStateStorageAttribute), true) as PageViewStateStorageAttribute ??
            new PageViewStateStorageAttribute(StateStorageTypes.Default);

        PageStatePersister psp;

        switch (psa.StorageType)
        {
        case StateStorageTypes.Session:
            psp = new SessionPageStatePersister(this.Page);
            break;

        case StateStorageTypes.InPage:
            psp = new HiddenFieldPageStatePersister(this.Page);
            break;

        //case StateStorageTypes.Default:
        default:
            psp = new SessionPageStatePersister(this.Page);
            break;
        }
        return(psp);
    }
        //
        // Summary:
        //     Deserializes and loads persisted state from the repository when
        //     a System.Web.UI.Page object initializes its control hierarchy.
        //
        // Exceptions:
        //   T:System.Web.HttpException:
        //     The System.Web.UI.SessionPageStatePersister.Load method could not successfully
        //     deserialize the state contained in the request to the Web server.
        public override void Load()
        {
            string viewStateKey;

            if (UseDefaultViewStateHiddenField)
            {
                // Get key from __VIEWSTATE hidden field
                HiddenFieldPageStatePersister _hiddenFiledPagePersister = new HiddenFieldPageStatePersister(Page);
                _hiddenFiledPagePersister.Load();
                viewStateKey = _hiddenFiledPagePersister.ViewState as string;
            }
            else
            {
                // Get key from custom hidden field
                //string viewStateKey = Page.Request.Params[ViewStateHiddenFieldName] as string;
                viewStateKey = Page.Request.Form[ViewStateHiddenFieldName] as string;
            }

            if (!string.IsNullOrEmpty(viewStateKey))
            {
                ViewStateInfo info = (ViewStateInfo)Repository.GetViewState(viewStateKey);

                IStateFormatter formatter = this.StateFormatter;
                Pair            statePair = (Pair)formatter.Deserialize((string)info.Value);

                ViewState    = statePair.First;
                ControlState = statePair.Second;

                // Remove from repository after serve
            }
        }
        /// <summary>
        /// Возвращает PageStatePersister в зависимости он настроек ViewState mode в web.config
        /// </summary>
        /// <returns></returns>
        public override PageStatePersister GetStatePersister()
        {
            PageStatePersister pageStatePersister;

            switch (Globals.Settings.ViewState.ViewStateMode)
            {
            case ViewStateModes.Default:
                pageStatePersister = base.GetStatePersister();
                break;

            case ViewStateModes.InPage:
                pageStatePersister = new HiddenFieldPageStatePersister(Page);
                break;

            case ViewStateModes.InSession:
                pageStatePersister = new SessionPageStatePersister(Page);
                break;

            case ViewStateModes.InMsSql:
                pageStatePersister = new StsSqlPageStatePersister(Page);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(pageStatePersister);
        }
        //
        // Summary:
        //     Serializes any object state contained in the System.Web.UI.PageStatePersister.ViewState
        //     or the System.Web.UI.PageStatePersister.ControlState property and writes the
        //     state to the repository.
        public override void Save()
        {
            if (base.ViewState == null && base.ControlState == null)
            {
                return;
            }

            IStateFormatter formatter = this.StateFormatter;
            Pair            statePair = new Pair(ViewState, ControlState);

            // Serialize the statePair object to a string.
            string serializedState = formatter.Serialize(statePair);

            ViewStateInfo info = new ViewStateInfo(serializedState);

            string viewStateKey = Page.Request.Form[ViewStateHiddenFieldName] as string;

            if (!string.IsNullOrEmpty(viewStateKey))
            {
                info.Id = viewStateKey;
            }

            Repository.SaveViewState(info);

            if (UseDefaultViewStateHiddenField)
            {
                // Save key in __VIEWSTATE hidden field
                HiddenFieldPageStatePersister _hiddenFiledPagePersister = new HiddenFieldPageStatePersister(Page);
                _hiddenFiledPagePersister.ViewState = info.Id;
                _hiddenFiledPagePersister.Save();
            }
            else
            {
                // Register hidden field to store cache key in
                Page.ClientScript.RegisterHiddenField(ViewStateHiddenFieldName, info.Id);
            }
        }
Example #5
0
 public ViewStatePersister(Page page, ICache cache, ITraceProvider trace) : base(page)
 {
     this.cache = cache;
     this.trace = trace;
     _hiddenFiledPagePersister = new HiddenFieldPageStatePersister(page);
 }