tutoriais mais recente desenvolvimento web
 

ASP.NET Web Forms - Mantendo o ViewState


Você pode salvar um monte de codificação através da manutenção do ViewState dos objetos em seu formulário da Web.


Mantendo o ViewState

Quando um formulário é enviado em ASP clássico, todos os valores do formulário são apagadas. Suponha que você tenha enviado um formulário com um monte de informações e o servidor volta com um erro. Você terá que voltar para a forma e corrigir as informações. Você clica no botão de volta, e o que acontece ....... TODAS valores do formulário são apagadas, e você terá que começar tudo de novo! O site não manter o seu ViewState.

Quando um formulário é enviado em ASP .NET, o formulário reaparece na janela do navegador, juntamente com todos os valores do formulário. Por quê? Isso ocorre porque ASP .NET mantém seu ViewState. O ViewState indica o status da página quando enviada para o servidor. O status é definido através de um campo oculto colocado em cada página com um <form runat = "server"> controle. A fonte poderia ser algo como isto:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />

.....some code

</form>

Mantendo o ViewState é a configuração padrão para o ASP.NET Web Forms. Se você quiser NÃO manter o ViewState, inclua a diretiva <% @ Page EnableViewState =% "false"> no topo de uma página .aspx ou adicionar o atributo EnableViewState = "false" a qualquer controle.

Olhe para o arquivo .aspx seguinte. Ele demonstra a "old" maneira de fazê-lo. Quando você clica no botão enviar, o valor forma irá desaparecer:

Exemplo

<html>
<body>

<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>

</body>
</html>
Mostrar exemplo »

Aqui é a nova maneira ASP .NET. Quando você clica no botão enviar, o valor forma não vai desaparecer:

Exemplo

Clique view source no quadro à direita do exemplo, para ver que ASP .NET adicionou um campo oculto no 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">
Your name: <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>
Mostrar exemplo »