Pregunta

Tener una página que agregue controles dinámicamente. El estado de control se está recuperando de la base de datos y los controles se vuelven a agregar a la página en la devolución de datos. El usuario puede agregar / eliminar controles a través de la interfaz de usuario. Cuando dos usuarios están en la misma página y uno agrega / elimina controles, el otro usuario recibirá un error de ViewState la próxima vez que intente modificar el estado del control.

" Error al cargar viewstate. El árbol de control en el que se está cargando el estado de vista debe coincidir con el árbol de control que se utilizó para guardar el estado de vista durante la solicitud anterior. Por ejemplo, al agregar controles dinámicamente, los controles agregados durante una devolución de datos deben coincidir con el tipo y la posición de los controles agregados durante la solicitud inicial. & Quot;

Esto se debe a que cuando se dibuja la página, uso un conjunto de controles y obtengo un conjunto diferente de controles en la devolución de datos porque el estado de control fue modificado por diferentes usuarios.

Entiendo el error y por qué está sucediendo, pero creo que me falta algo aquí. ¿Hay alguna manera de tener una página que agregue controles dinámicamente y pueda manejar usuarios concurrentes que modifiquen el estado de los controles?

¿Fue útil?

Solución

Debe separar el estado del usuario actual del estado maestro o global. En la devolución de datos, en lugar de construir su árbol de control basado en la definición maestra en la base de datos, cargue un árbol de control en caché que sea específico para el usuario actual. Una vez que pase la reconstrucción de ViewState, inicie su proceso de reconciliación, ya sea que sea automático o necesite cargar otra IU para permitir que el usuario participe está fuera del alcance de la pregunta.

El punto es que necesita mantener " sucursales " del maestro por usuario y se compromete y lee de manera más controlada.

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