ASP.NET - Mantener ViewState

Al mantener el ViewState (estado de vista) de los objetos en el formulario web, puedes ahorrar mucho trabajo en la codificación.

Mantener ViewState (estado de vista)

Cuando se envía un formulario en classic ASP, todos los valores del formulario se borrarán. Imagina que has enviado un formulario con mucha información y el servidor devuelve un error. Tendrás que regresar al formulario y corregir la información. Haces clic en el botón de regresar, y ¿qué sucede... todos los valores del formulario se borran y tienes que comenzar todo de nuevo. El sitio no mantiene tu ViewState.

Cuando se envía un formulario en ASP .NET, el formulario reaparece con todos los valores del formulario. ¿Cómo se logra esto? Es debido a que ASP .NET mantiene su ViewState. El ViewState indica el estado de la página cuando se envía al servidor. Colocando un campo oculto en un control <form runat="server"> en cada página, podemos definir el estado de la página. El código fuente puede ser similar a esto:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....algún código
</form>

Mantener ViewState es la configuración predeterminada de ASP.NET Web Form. Si no desea mantener ViewState, incluya la instrucción en la parte superior de la página .aspx: <%@ Page EnableViewState="false" %> o agregue la propiedad a cualquier control: EnableViewState="false".

Por favor, vea el archivo .aspx siguiente. Muestra el modo de ejecución antiguo. Al hacer clic en el botón de enviar, los valores del formulario desaparecerán:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Su nombre: <input type="text" name="fname" size="20">
<input type="submit" value="Enviar">
</form>
<%
dim fname
fname=Request.Form("fname")
Si fname<>"" Then
Response.Write("¡Hola " & fname & "!")
Final de Si
%>
</body>
</html>

Mostrar este ejemplo

Este es el nuevo método de ASP .NET. Al hacer clic en el botón Enviar, los valores del formulario no desaparecerán:

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="¡Hola " & txt1.Text & "!"
Final de Sub
</script>
<html>
<body>
<form runat="server">
Su nombre: <asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Enviar" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
</body>
</html>

Mostrar este ejemplo (Haga clic en "Ver documento original" en el cuadro de la derecha, donde puede ver que ASP .NET ha agregado un campo oculto al formulario para mantener el ViewState。)