ViewState é o mecanismo qual o ASP.NET utiliza para manter o estado de controles e objetos quando um Postback ocorre na página. As informações são armazenadas em um controle html do tipo hidden chamado _VIEWSTATE.
Veja um exemplo do código-fonte da sua página que contém o ViewState:
Note que os dados são criptografados, portanto existe segurança de dados dentro desse campo _ViewState.
Mesmo sem colocar nenhum controle na sua página o ViewState é criado automaticamente, pois por padrão ele é habilitado.
Podemos usar o ViewState para armazenar valores de objetos sem que seja necessário gravá-los no servidor. Porém, isto tem um desvantágem: Quanto mais objetos são armazenados no ViewState, maior será sua página. Então, tenha cuidado com o que coloca no ViewState. Eu já peguei páginas com ViewState gigantescos onde deixava a página com 50kb e após sua retirada, a página ficara com 22kb. Isto para usuários que possuem uma conexão com internet lenta, é um tormento.
A seguir demonstro como utilizar o ViewState para armazenar o valor de uma variável 'contador' que é incrementada toda vez que a página faz PostBack.
protected void Page_Load(object sender, EventArgs e)
{
int contador = 0;
// número de requisições para esta página postada até agora
if (ViewState["contador"] != null)
{
contador = Convert.ToInt32(ViewState["contador"]) + 1;
}
// grava o valor de contador no viewstate
ViewState["contador"] = contador;
Response.Write(contador);
}
Note que o código só irá funcionar corretamente quando a página faz um PostBack ou é enviado um comando de POST via formulário para ela.
Existem várias formas de desativar o ViewState, seguem:
via programação
TeuControle.EnableViewState = False
via diretiva @Page
<@ Page EnableViewState="false" %>
via web.config
Bom, por hoje é só pessoal.
Espero que tenham gostado da dica.
t+