Formularios web ASP.NET: mantenimiento de ViewState
ViewState se basa en el formulario web. Establezca runat = "servidor" en el atributo de control del formulario web. Este control se adjuntará con un atributo oculto _ViewState. _ViewState almacena los valores de estado de todos los controles en ViewState. Esta sección le presenta cómo ASP.NET mantiene ViewState.
Al mantener el ViewState de los objetos en su formulario web, puede ahorrarse mucho trabajo de codificación.
En ASP clásico, cuando se envía un formulario, se borran todos los valores del formulario. Digamos que envía un formulario con mucha información y el servidor devuelve un error. Tendrás que volver al formulario para corregir la información. Pulsas el botón Atrás y qué pasa... ¡todos los valores del formulario se borran y tienes que empezar todo de nuevo! El sitio no mantiene su ViewState.
En ASP .NET, cuando se envía un formulario, el formulario aparece en la ventana del navegador junto con los valores del formulario. ¿Cómo? Esto se debe a que ASP .NET mantiene su ViewState. ViewState indica el estado de la página cuando se envía al servidor. Este estado se define colocando un campo oculto en cada página con un control <form runat="server">. El código fuente es el siguiente:
<formulario nombre="_ctl0" método="post" acción="page.aspx" id="_ctl0"><tipo de entrada="hidden" nombre="__VIEWSTATE"value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />... ..algo de código</form>
Mantener ViewState es la configuración predeterminada para ASP.NET Web Forms. Si no desea mantener ViewState, incluya la directiva <%@ Page EnableViewState="false" %> en la parte superior de la página .aspx o agregue el atributo EnableViewState="false" a cualquier control.
Consulte el archivo .aspx a continuación. Demuestra la forma "antigua" de operar. Cuando haces clic en el botón enviar, los valores del formulario desaparecerán:
<html><body><form action="demo_classicasp.aspx" método="post">Su nombre: <input type="text" name="fname" size="20"><input type="submit" valor ="Enviar"></form><%dim fnamefname=Request.Form("fname")If fname<>"" ThenResponse.Write("Hola " & fname & "!")Fin Si%></body></html>
Aquí está la nueva forma ASP .NET. Cuando haces clic en el botón enviar, los valores del formulario no desaparecen:
Haga clic en Ver código fuente en el marco derecho de la instancia y verá que ASP.NET ha agregado un campo oculto al formulario para mantener ViewState.
<script runat="servidor">Subenviar(remitente como objeto, e como EventArgs)lbl1.Text="Hola " & txt1.Text & "!"End Sub</script><html><body><form runat= "servidor">Su nombre: <asp:TextBox id="txt1" runat="servidor" /><asp:Button OnClick="enviar" Text="Enviar" runat="servidor" /><p><asp:Etiqueta id="lbl1" runat="servidor" /></p></form></body></html>