示例#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>
        /// Возвращает 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);
        }