Aquí podría ser tu PUBLICIDAD


¿Cómo obtener el valor de ViewState codificado y construido?

votos
22

Necesito tomar la representación codificada en base64 de ViewState. Obviamente, esto no estaría disponible hasta bastante tarde en el ciclo de vida de la solicitud, lo cual está bien.

Por ejemplo, si el resultado de la página incluye:

<input type=hidden name=__VIEWSTATE 
  id=__VIEWSTATE value=/wEPDwUJODU0Njc5MD...== />

Necesito una forma en el lado del servidor para obtener el valor /wEPDwUJODU0Njc5MD...==

Para aclarar, necesito este valor cuando la página se está procesando, no en PostBack. por ejemplo, necesito saber el valor de ViewState que se está enviando al cliente, no el ViewState que estoy obteniendo de ellos.

Publicado el 04/08/2008 a las 04:59
fuente por usuario Rex M
En otros idiomas...        العربية       

3 respuestas

votos
9

Rex, sospecho que un buen lugar para empezar a buscar es soluciones que comprimen el ViewState : están tomando ViewState en el servidor antes de enviarlo al cliente y descomprimirlo. Eso es exactamente donde quieres estar.

Respondida el 04/08/2008 a las 09:04
fuente por usuario Jeff Atwood


Aquí podría ser tu PUBLICIDAD


votos
3

Vea esta publicación de blog donde el autor describe un método para anular el comportamiento predeterminado para generar el ViewState y en su lugar muestra cómo guardarlo en el objeto de sesión del servidor.

En ASP.NET 2.0, ViewState es guardado por un descendiente de la clase PageStatePersister. Esta clase es una clase abstracta para guardar y cargar ViewsState y hay dos descendientes implementados de esta clase en .Net Framework, llamado HiddenFieldPageStatePersister y SessionPageStatePersister. Por defecto, HiddenFieldPageStatePersister se usa para guardar / cargar información de ViewState, pero podemos hacer que SessionPageStatePersister funcione fácilmente y guardar ViewState en el objeto Session.

Aunque no probé su código, parece mostrar exactamente lo que desea: una forma de obtener acceso al código de ViewState mientras aún está en el servidor, antes de la devolución de datos.

Respondida el 04/08/2008 a las 10:04
fuente por usuario Yaakov Ellis

votos
2

Permití la compresión siguiendo artículos similares a los publicados anteriormente. La clave para acceder al ViewState antes de que la aplicación lo envíe fue anular este método;

protected override void SavePageStateToPersistenceMedium(object viewState)

Puede llamar al método base dentro de esta anulación y luego agregar cualquier lógica adicional que necesite para manejar ViewState.

Respondida el 05/08/2008 a las 11:07
fuente por usuario Dave Anderson