Não irei entrar no mérito sobre o que é o viewstate, mas dependendo do número de webcontrols que temos em nossa página ele se torna absurdamente grande, uma maneira de contornar isso é salvando ele na sessao.

Iremos criar um atributo no webconfig, caso ele esteja ativado ele salvará o viewstate na sessão.

C#:

protected override object LoadPageStateFromPersistenceMedium()
        {

            object objViewState;

            if (ConfigurationManager.AppSettings["ServerSideViewState"] != null &&
                ConfigurationManager.AppSettings["ServerSideViewState"].ToUpper().Equals("TRUE"))
            {
                objViewState = Context.Session["VIEWSTATE"];

                if (objViewState == null)
                {
                     return;
                    // Sessao expirada
                }
                               
                return objViewState;                
               
            }
            else
            {

                return base.LoadPageStateFromPersistenceMedium();
            }
                             
        }

        protected override void SavePageStateToPersistenceMedium(object state)
        {


            if (ConfigurationManager.AppSettings["ServerSideViewState"] != null &&
                ConfigurationManager.AppSettings["ServerSideViewState"].ToUpper().Equals("TRUE"))
            {
                Context.Session["VIEWSTATE"] = state;
            }
            else
            {

                base.SavePageStateToPersistenceMedium(state);
            }
                       
        }
Tags: c#, csharp, dotnet

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

Sem feedback para esse post ainda

Deixe seu comentário


Seu endereço de e-mail não será revelado nesse site.

Sua URL será exibida.
(Quebras de linha se tornam <br />)
(Nome, e-mail & website)
(Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))