Olá! Quarta Feira, 23 de Maio de 2012.



Dicas CódigoFonte.net
Segunda Feira, 09 de Fevereiro de 2009

Armazenando a ViewState na Session no ASP.Net

Olá Pessoal,

Hoje vou explicar como diminuirmos um tamanho da página trocando a forma como é armazenado um mecanismo chamado ViewState no ASP.Net

Como vocês devem saber, as nossas páginas ASP.NET armazenam os estatos dos componentes no HTML gerado para o cliente, isto permite que os controles sejam preenchidos e seus valores possam ser acessados em nosso código .cs. É simplesmente uma maravilha, porém, caso tenhamos muitas informações nestes controles, nosso viewstate também crescerá e, como consequência, a página gerada para o usuário também.

Já cheguei a pegar projetos que consegui economizar mais de 70Kb só com informações de viewstate. Mas, como eu consegui isto? Armazenando o nosso viewstate no CACHE ou na Sessão!

No código a seguir, a classe, baseada nos parâmetros de configuração no web.config, irá armazenar nosso viewstate no CACHE ou na SESSION (recomendo colocá-los na SESSION).

Primeiro, você deve adicionar as seguintes configurações dentro do seu Web.config (lembre-se de colocá-las dentro da tag <appSettings>aqui</appSettings>.

<add key="ServerSideViewState" value="True"/>
<add key="ViewStateStore" value="Session"/>
<add key="ViewStateTableSize" value="150"/>

Isto será necessário em nossa classe. Explico cada linha dentro do código.

Crie uma classe dentro do projeto Web, provavelmente o ASP.Net (se você não tiver) irá perguntar se deseja criar uma pasta chamada "App_Code". Diga sim. Esta nova classe será criada dentro desta pasta.

O código dela segue:

Pronto. Criado a classe, você deverá alterar suas páginas para não mais herdar da classe

System.Web.UI.Page, mas sim da sua nova classe ViewStatePage.

Feito isto, todo o resto do processo será automático e, caso tenha curiosidade, poderá ver que seu HTML terá um tamanho bastante reduzido, comparado a quando era antes.

Caso deseje não mais utilizar este mecanismo, basta setar a configuração como False no seu parâmetro ServerSideViewState do Web.config.

Tem também uma outra forma de fazer este processo de economia do ViewState, é compactando ele. Veja como compactar um viewstate no ASP.Net neste artigo.

Bom, por hoje é só pessoal.

Até a próxima.

Comentários do artigo [Novo comentário]

Renato Mattos - 03 de Março de 2010 - 18:08
Parabéns pelo artigo. O código funcionou perfeitamente sem erros e melhorou o desempenho de minha aplicação. Obrigado por compartilhar o seu código.
claudio furukawa - 24 de Maio de 2010 - 12:39
O artigo funciona, mas usando AJAX apresenta erros no codigo :

"Erro em tempo de execução do Microsoft JScript: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled."

Será que tem como resolver isto?
Alguem tem uma solução?

Abraços..
Emmanuel Alves Nóbrega - 06 de Setembro de 2010 - 00:52
Iae kra, pra poder resolver o problema, altera a linha onde tem RegisterHiddenField("__VIEWSTATE_KEY", VSKey); para ScriptManager.RegisterHiddenField(this, "__VIEWSTATE_KEY", VSKey);
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:






CodigoFonte.net » CodigoFonte.eti.br » Compre De Tudo » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com