__viewstate asp.net vb.net visual-studio viewstate state

__viewstate - ¿Tengo que usar Viewstate en ASP.NET?



viewstate c# (13)

Me estoy moviendo de ASP clásico a ASP.NET y he encontrado lo que muchos de ustedes ya conocen como "viewstate". Podría estar lanzando el arma con mi suposición, pero parece muy engorroso. He desarrollado muchos formularios ASP en el pasado y nunca tuve problemas para mantener el estado. ¿Hay otra forma O tendré que aprender esta cosa de Viewstate en ASP.NET? Estoy usando Visual Studio 2008, VB.NET como el código detrás del lenguaje y Framework v3.5 con SQL Server 2005.


Algunos controles están profundamente paralizados cuando desactiva ViewState, así que prepárese para abordar estas inquietudes. Es más fácil simplemente ser perezoso y dejarlo activado, pero si no se lo controla, ViewState puede representar fácilmente el 30% del tamaño de su HTML.

Por ejemplo, supongamos que tiene un DropDown y lo vincula a una lista de Fruits. Lo vincula en el bloque if (! IsPostBack) {} en la carga de la página. Si desactiva ViewState, perderá los elementos cuando haga clic en un botón. Deben estar vinculados a cada carga de página. También perderá su índice seleccionado, por lo que deberá sacarlo de las variables Request.Form [].


Definitivamente puedo recomendar evitar ViewState en DataGrids y DropDownLists porque recientemente comencé a hacerlo yo mismo. No hice esto por diversión, tuve que arreglar una página que había crecido tanto que causaba otros problemas. Pero esto resultó ser fácil, y los resultados fueron tan dramáticos que estoy muy contento. Por supuesto, para una aplicación simple pequeña o para pequeñas cantidades de datos esto no será necesario, pero por otro lado es bueno ser consistente (siempre pasar de conocido a conocido para que pueda mejorar continuamente su proceso ...), y por qué cargar con equipaje extra, alguna vez?

Esto requerirá una pequeña intervención manual de su parte. Por ejemplo, si desactiva viewstate para listas desplegables, deberá volver a vincularlas en cada devolución de datos y luego restaurar SelectedValue desde el objeto Request. Necesitarás leer sobre esto, pero google tiene mucha información fácilmente disponible.


En ASP clásico, siempre utilizamos un campo OCULTO para hacer el trabajo. Viewstate es solo una manera de hacerlo automáticamente. Confíe en mí, la curva de aprendizaje no es tan alta como podría pensar.


No es necesario. Mira el marco de MVC . Elimina ViewState y funciona como ASP anterior (al menos desde este punto de vista).


Si está escribiendo código para su propio consumo, puede apagarlo y no preocuparse.

Presumiblemente, mantendrá el código de Web Forms escrito por otras personas, por lo que debe saber cuáles son las opciones de configuración y los puntos débiles. Los mejores en los que puedo pensar

  • cómo deshabilitarlo en el sitio, página y nivel de control
  • Por qué MachineKey es relevante en granjas web
  • por qué tu registro de eventos está lleno de errores de ViewStateAuthentication
  • qué ViewStateUserKey es

En términos de la curva de aprendizaje real, esta es probablemente una lectura completa de un par de artículos de MSDN.


ViewState es completamente opcional en casi todos, si no en todos los casos. ASP.NET rellena automáticamente los campos incluso si ViewStateEnabled = false. He estado usando ASP.NET durante 5 o 6 años y nunca he tenido que depender de ViewState. Incluso lo deshabilito cuando puedo.


ViewState es opcional, pero útil. Lo que ViewState es, son todos los cambios que ocurren en un control en el lado del servidor. Por lo tanto, si está asignando texto a una etiqueta y desea que el texto persista sin la necesidad de reasignarlo en cada devolución, querrá mantener eso. Otro ejemplo en el que siempre dejo ViewState es cualquier elemento de datos.

Dicho esto, hay momentos en los que es útil desactivar ViewState por la misma razón. Por ejemplo, el único lugar donde siempre apago ViewState es una etiqueta MESSAGE. De esa manera, cuando tengo que imprimir un mensaje para el usuario (uno que debería aparecer solo una vez y luego desaparecer) simplemente agrego el texto a la etiqueta y luego me olvido de él. Durante el próximo PostBack, la etiqueta volverá automáticamente al texto que se encuentra en la declaración ASPX para ese control (en este caso, una cadena vacía).

Ahora, tenga en cuenta que esto no tiene nada que ver con la colección de formularios, que son los valores publicados en IIS durante el PostBack. La colección de formularios envía los valores que el usuario ingresa a los elementos de formulario (cuadros de texto, casillas de verificación, listas de distribución, etc.). Estos .NET se llenarán en el lugar apropiado, y esto ocurre DESPUÉS de que se haya procesado ViewState.

De esta manera, si envía un cuadro de texto con la frase "Hola" al cliente, el usuario lo cambia a "Ver" y luego envía el formulario, lo que tendrá el cuadro de texto cuando se active el evento Page_Load es un cuadro de texto con "Nos vemos" en el atributo TEXTO.


ViewState es un mal necesario inherente a la metáfora de las formas web. Personalmente, considero que esta metodología es obsoleta, está hinchada y, en general, no es amigable para la web. Es mejor que revises el framework MVC como se sugirió anteriormente.

Sugiero que evite la tentación de usar ViewState como "caché" para pasar datos de un lado a otro (he visto sitios web que hacen esto debido a la configuración en clúster y al estado de sesión respaldado por SQL). Los datos se serializan y se agregan a la página y deben hacer un viaje de ida y vuelta a cada solicitud, agregar al tamaño total de la página y hacer que su sitio sea más lento de cargar.


ViewState funciona automáticamente en su mayor parte. Es así como ASP.NET realiza un seguimiento del estado actual de todos sus controles.

También puede usar viewstate manualmente, si desea almacenar algunos datos adicionales. Eso es tan simple como:

Viewstate["Key"] = value;

La única advertencia es que cualquier objeto que almacene en viewstate debe ser serializable.


Viewstate es parte del paquete cuando trabaja con ASP.NET. Para una página / sitio web básico, no debería tener que ''saber'' cómo usar Viewstate. Simplemente se usa cuando pones controles en las páginas.

Es bastante difícil evitar Viewstate con ASP.NET porque incluso si lo desactivas a nivel de proyecto, algunos controles individuales aún usan Viewstate para conservar su información.

Si no desea tratar con Viewstate, considere utilizar el marco ASP.NET MVC. Es probable que se sienta más cómodo con el framework MVC proveniente de Classic ASP.


Viewstate se mantiene automáticamente para controles asp.net "rooteados" a la página. Hay poco que tenga que hacer, los valores y otra información se pasan en una entrada oculta codificada en B64. Puede verlo si lo desea, pero no importa, todo se maneja automágicamente para usted.



''<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HomePage.ascx.cs" Inherits="HomePage" %> <script runat="server"> void testHF_ValueChanged(object sender, EventArgs e) { this.HFvalue.Text = this.testHF.Value ; } </script> <asp:Label ID="UserNamelbl" runat="server" Text="User Name : " Visible="false"></asp:Label> <asp:TextBox ID="UserNametxt" runat="server" Visible="false" ></asp:TextBox> <asp:Label ID="HFvalue" Text="......" runat="server"></asp:Label> <asp:HiddenField ID="testHF" OnValueChanged="testHF_ValueChanged" value="" runat="server" ></asp:HiddenField> <input type="submit" name="SubmitButton" value="Submit" onclick="CL()" /> <script type="text/javascript"> function CL() { this.testHF.Value = this.UserNametxt.Text; } </script> ''