Los últimos tutoriales de desarrollo web
 

ASP.NET Formularios Web - Mantener el ViewState


Usted puede ahorrar un montón de codificación mediante el mantenimiento de la ViewState de los objetos en el formulario Web.


El mantenimiento de la ViewState

Cuando se envía un formulario en ASP clásico, todos los valores del formulario se borran. Supongamos que haya enviado un formulario con una gran cantidad de información y el servidor vuelve con un error. Tendrá que volver a la forma y corregir la información. Hace clic en el botón de retroceso, y lo que sucede ....... TODOS los valores del formulario se borran, y tendrá que empezar todo de nuevo! El sitio no mantuvo su ViewState.

Cuando se envía un formulario en ASP .NET, la forma vuelve a aparecer en la ventana del navegador junto con todos los valores del formulario. ¿Cómo? Esto se debe a ASP .NET mantiene su ViewState. El ViewState indica el estado de la página cuando se somete al servidor. El estado se define a través de un campo oculto colocado en cada página con un <form runat = "server"> control. La fuente podría ser algo como esto:

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

.....some code

</form>

El mantenimiento de la ViewState es la configuración predeterminada para ASP.NET Web Forms. Si desea mantener el ViewState NO, incluir la directiva <% @ Page EnableViewState =% "false"> en la parte superior de una página .aspx o añadir el atributo EnableViewState = "false" a ningún control.

Mira el siguiente archivo .aspx. Esto demuestra la "old" forma de hacerlo. Al hacer clic en el botón de envío, el valor desaparecerá forma:

Ejemplo

<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>
Ver ejemplo »

Aquí está el nuevo modo ASP .NET. Al hacer clic en el botón de envío, el valor de forma no va a desaparecer:

Ejemplo

Haga clic en Ver código fuente en el marco de la derecha del ejemplo para ver que ASP .NET ha añadido un campo oculto en la forma de mantener el 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>
Ver ejemplo »