2008-08-04 13 views
21

Necesito obtener 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.¿Cómo obtener el valor de ViewState codificado y construido?

Por ejemplo, si la salida de la página incluye:

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

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

Para aclarar, necesito este valor cuando la página es siendo renderizado, no en PostBack. p.ej. Necesito saber el valor ViewState que está siendo enviado al cliente, no el ViewState que estoy recibiendo de ellos.

Respuesta

3

Ver este blog post donde el autor describe un método para anular el comportamiento por defecto para generar el ViewState y en su lugar muestra cómo ahorrar en el objeto de sesión del servidor

En ASP.NET 2.0, ViewState es salvado por un descendiente de PageStatePersister clase. 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. De forma predeterminada, HiddenFieldPageStatePersister se usa para guardar/cargar información de ViewState, , pero podemos obtener fácilmente SessionPageStatePersister para trabajar 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 ViewState mientras aún está en el servidor, antes de la devolución de datos.

2

He habilitado 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 de base dentro de esta anulación y luego añadir lo lógica adicional que necesita para manejar el ViewState.

Cuestiones relacionadas