¿Cómo se accede a Control.ViewState con una subclase de Control agregada dinámicamente?

StackOverflow https://stackoverflow.com/questions/130705

  •  02-07-2019
  •  | 
  •  

Pregunta

Hemos creado un control que necesita conservar datos a través de la propiedad ViewState de la clase Control. Nuestras subclases de clase controlan estrictamente para obtener acceso a la propiedad ViewState (está protegida en el objeto Page). Estamos agregando el control a Page.Controls en OnInit y luego intentamos establecer la propiedad ViewState en OnPreLoad.

Cuando decodificamos y examinamos el ViewState de la página, nuestros valores no se han escrito y, por lo tanto, no están disponibles para su recuperación posterior.

¿Alguien sabe cómo podemos lograr que nuestro control participe en el proceso ViewState?

¿Fue útil?

Solución

El problema es agregar el control a la página directamente. Desafortunadamente, esto es demasiado alto en la jerarquía de controles para participar en la Gestión de formularios ViewState. Si agrega el control a la colección de controles del formulario ASPNet en algún lugar, participará con éxito en LoadViewStateRecursive y SaveViewStateRecursive.

Otros consejos

Intente crear su control en OnInit, luego agréguelo a la página. Controles durante OnLoad.

ViewState no se carga hasta después de OnInit, sino antes de OnLoad.

Aquí hay un resumen del ciclo de vida de la página ( GregMac ) publicado en respuesta a una pregunta anterior de mio.

  • Inicializar
  • LoadViewState
  • Cargar datos de devolución
  • Control de llamadas Cargar eventos
  • Evento de carga de llamadas
  • Eventos de control de llamadas
  • Control PreRender
  • PreRender
  • SaveViewState
  • Descargar

        
  • Licenciado bajo: CC-BY-SA con atribución
    No afiliado a StackOverflow
    scroll top