2012-06-11 59 views
6

¿Dónde se almacena un ViewState? ¿Está almacenado en el servidor o en el lado del cliente?¿Dónde se almacena ViewState?

Tengo una gran cantidad de datos que deben almacenarse para algunos procesos. Estaba usando Session. Pero cuando se mueve de una página a otra, no puedo borrar la sesión. Entonces pensé en implementar ViewState. Pero cuando se ejecuta con una gran cantidad de datos, ¿ViewState está arrojando un error?

¿Cómo puedo resolver esto?

+0

Es mejor que examine la caché de ASP.NET, puede que la encuentre adecuada para sus necesidades. –

Respuesta

8

Viewstate se almacena en la página en sí mismo en forma codificada. No puede acceder al viewstate en el lado del cliente de manera directa. Necesita conocer los algoritmos de codificación/descodificación para obtener los datos valiosos de este viewstate en el código del cliente.

Puede usar la variable oculta para almacenar datos que se usarán solo en esa página. Las variables ocultas son accesibles desde el lado del cliente y el código del lado del servidor.

Puede usar caché o sesión para almacenar datatable (datos grandes). Tendrán un buen rendimiento en comparación con ViewState.

La caché siempre se está utilizando la memoria de la máquina, la sesión utiliza lo que se ha configurado:

En una granja de servidores web de la sesión puede ser local (que sólo funciona si la afinidad está establecido) o remoto (servidor de estado o base de datos, o personalizada), pero la memoria caché siempre es local.

Por lo tanto, almacenar una DataTable en la caché consumirá memoria, pero no usará la serialización.

PD: el almacenamiento de un DataSet en lugar de un DataTable no cambiará casi nada.

Refer Cache Implementation

+0

sepa más sobre viewstate de http://msdn.microsoft.com/en-us/library/bb386448.aspx y http://weblogs.asp.net/sreejukg/archive/2010/04/06/viewstatemode-in- asp-net-4-0.aspx –

+0

"No se puede acceder al viewstate en el lado del cliente". Como cuestión de hecho, puede acceder a él, ya que no está encriptado (por defecto). Sin embargo, no puede modificarse, ya que contiene un hash que será verificado por ASP.NET. – Steven

+0

@Steven, estoy de acuerdo con usted en que podemos acceder al viewstate, pero no será útil para acceder a ellos, ya que obtendremos el valor real/decodificado de la variable viewstate. –

7

El ViewState no se almacena en cada lado, es enviar ida y vuelta entre el servidor y el navegador en cada petición y respuesta, así que no es una buena idea poner una enorme cantidad de datos en ViewState .

1

Guarde una gran cantidad de datos en el estado de visualización. Reduzca la velocidad de su sitio. Utilice una cadena de consulta para obtener una copia nueva de la base de datos en cada página en lugar de guardar toda la información de la página anterior.

0

Ver información del estado almacena en campos ocultos. La información viaja entre el servidor y el cliente en estos campos ocultos.

Para el control asp.net, .. por defecto .net implementa el estado de vista para todo su control, por eso un valor de cuadro de texto no se pierde cuando hacemos clic en un botón de esa página.

Cuestiones relacionadas