2011-01-23 12 views
12

¿Cuál es la diferencia cuando se utilizacampo oculto vs estado de vista

  • Campo oculto vs Vista del estado?
  • ¿Cuándo usar cada uno?
  • ¿Cuál es más seguro?
  • ¿Cuál es mejor en rendimiento?
  • ¿Cuáles son las alternativas?
+1

Ninguno es realmente mejor o peor que el otro. ¿Qué quieres almacenar? – Phill

+0

a veces (ID de productos), a veces tabla de datos, etc. –

Respuesta

8

ViewState se almacena en un campo oculto y contiene información sobre toda la página. También se puede encriptar. Debido a que el estado de visualización siempre se envía al código subyacente cuando se realizan las transferencias, es muy práctico ya que siempre obtiene los valores. El inconveniente es que puede ser realmente grande si comienza a poner mucha información dentro y el rendimiento podría comenzar a sufrir. Por ejemplo, en algunas solicitudes AJAX solo desea enviar información pequeña al servidor y si utilizó UpdatePanels se enviará ViewState completo y contendrá información que no es necesaria.

+0

Sí, ¿quieres decir que usar viewstate con un uso intensivo de AJAX no es un rendimiento inteligente? –

+1

@just_name, depende de cómo esté haciendo AJAX. Si está utilizando UpdatePanels, entonces no, no es prudente, si está utilizando algún otro framework, como jQuery, tiene control total de lo que se envía al servidor. –

+0

sí, veo muchas gracias. –

3

Un campo oculto se puede ver en una fuente HTML de páginas mientras que ViewState es, por decir lo menos, ofuscado y, dependiendo de su versión .net, se puede cifrar en diversos grados.

asp.net viewstate encryption

Campo oculto será mejor en el rendimiento, pero no proporciona seguridad y si los datos enviados pueden ser manipulados, sea mucho más fácil de cambiar el ViewState.

Las variables de sesión son una buena alternativa a estas.

+2

+1 Por ejemplo, si desea que las secuencias de comandos del lado del cliente puedan acceder fácilmente al valor, use un campo oculto. – Lisa

-1

ViewState internamente utiliza el campo oculto. Es administrado por ASP.NET Engine y está encriptado de forma predeterminada.

Por otro lado, con control de campo oculto, puede administrar lo que está almacenado en él. Por defecto, no está encriptado.

Rendimiento sabio, ambos son iguales. Pero, siento que ViewState es más seguro. ASP.NET mantiene su hash para prevenir/identificar cualquier alteración del lado del cliente.

También puede usar la sesión para almacenar datos.

+6

ViewState no está encriptado de forma predeterminada: es una cadena codificada en Base64. – codingbadger