Formulários Web ASP.NET - Mantendo ViewState
ViewState é baseado em webform. Defina runat = "server" no atributo de controle do formulário da web. Este controle será anexado com um atributo oculto _ViewState que armazena os valores de status de todos os controles em ViewState. Esta seção apresenta como o ASP.NET mantém o ViewState.
Ao manter o ViewState dos objetos em seu Web Form, você pode economizar muito trabalho de codificação.
No ASP clássico, quando um formulário é enviado, todos os valores do formulário são apagados. Digamos que você submeta um formulário com muitas informações e o servidor retorne um erro. Você terá que voltar ao formulário para corrigir as informações. Você aperta o botão Voltar e o que acontece... todos os valores do formulário são apagados e você tem que começar tudo de novo! O site não está mantendo seu ViewState.
No ASP .NET, quando um formulário é enviado, ele aparece na janela do navegador junto com os valores do formulário. Como? Isso ocorre porque o ASP .NET mantém seu ViewState. ViewState indica o estado da página quando ela é enviada ao servidor. Este estado é definido colocando um campo oculto em cada página com um controle <form runat="server">. O código fonte é o seguinte:
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0"><input type="hidden" name="__VIEWSTATE"value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />... ..algum código</form>
Manter ViewState é a configuração padrão para ASP.NET Web Forms. Se você não quiser manter o ViewState, inclua a diretiva <%@ Page EnableViewState="false" %> no topo da página .aspx ou adicione o atributo EnableViewState="false" a qualquer controle.
Por favor, veja o arquivo .aspx abaixo. Demonstra a “velha” forma de operar. Ao clicar no botão enviar, os valores do formulário desaparecerão:
<html><body><form action="demo_classicasp.aspx" method="post">Seu nome: <input type="text" name="fname" size="20"><input type="submit" value ="Enviar"></form><%dim fnamefname=Request.Form("fname")If fname<>"" ThenResponse.Write("Olá " & fname & "!")Fim Se%></body></html>
Aqui está o novo jeito ASP .NET. Ao clicar no botão enviar, os valores do formulário não desaparecem:
Clique em Exibir código-fonte no quadro direito da instância e você verá que o ASP.NET adicionou um campo oculto ao formulário para manter o ViewState.
<script runat="server">Sub submit(sender As Object, e As EventArgs)lbl1.Text="Hello " & txt1.Text & "!"End Sub</script><html><body><form runat= "server">Seu nome: <asp:TextBox id="txt1" runat="server" /><asp:Button OnClick="submit" Text="Submit" runat="server" /><p><asp:Label id="lbl1" runat="server" /></p></form></body></html>