Al extender un control web asp.net, ¿en qué evento se deben inyectar controles web adicionales?

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

  •  08-07-2019
  •  | 
  •  

Pregunta

Estoy tratando de evitar un control compuesto o usando un ASCX extendiendo un control existente. Sin embargo, tengo problemas para agregar los controles al control heredado y mantener su integridad de estado de vista / posterior. Cada vez que agrego los controles durante el pre-renderizado, los controles aparecen, pero el post-back arroja una excepción de estado de vista. Intenté agregarlos tanto allí como durante LoadViewState (que por supuesto fue una tontería). Init no está disponible desde el control que estoy extendiendo.

  

La excepción es   Sys.WebForms.PageRequestManagerServerErrorException:   Error al cargar el estado de vistas. El control   árbol en el que se está viendo viewstate   cargado debe coincidir con el árbol de control   que se usó para guardar viewstate durante   La solicitud anterior. Por ejemplo,   al agregar controles dinámicamente, el   controles agregados durante un post-back must   coincidir con el tipo y la posición de la   controles agregados durante la inicial   solicitud

¿Fue útil?

Solución

En realidad, Microsoft dice que debe anular el Método CreateChildControls .

Puede llamar al método de clase base antes o después de agregar los controles, no estoy seguro de si hay una convención allí.

protected override void CreateChildControls(){
  Controls.Add(someControl);
  base.CreateChildControls();
}

¡Espero que eso ayude!

Otros consejos

Debe agregarlos en OnInit o en CreateChildControls. De todos modos, para evitar tener problemas con ViewState, lea este GRAN artículo . Posiblemente, muestra " 4. Inicializando controles secundarios mediante programación " es tu caso.

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