2010-02-24 40 views
6

Pregunta para morir en los expertos de asp.net. He pasado mucho tiempo tratando de encontrar una respuesta o hacerlo yo mismo, pero hasta ahora no he tenido suerte.Devolución de llamada asíncrona concurrente

Aplicación web ASP.NET. Planeo mejorar el tiempo de carga de la página para que la experiencia del usuario sea mejor. Quiero retrasar la carga de las secciones de la página usando UpdatePanels. Puedo hacer una actualización de UpdatePanel justo después de cargar la página usando el temporizador con un intervalo mínimo. Eso funciona bien, pero los pasos comienzan cuando intentas hacerlo con múltiples UpdatePanels. Básicamente, lo que sucede es que todos los paneles se actualizan de forma secuencial en lugar de todos al mismo tiempo.

Ahora, he leído que esto se debe a un hecho de que cada resultado de la devolución de datos asincrónica acarrea el estado de visualización de página completa y para evitar las inconsistencias del estado de visualización, las serializaciones asincrónicas se serializan. En realidad, dicen que solo la última devolución de llamada sería exitosa, así que tengo la suerte de tenerlos serializados, supongo.

Y ahora la gran pregunta: ¿alguien ha encontrado una forma de evitarlo? En ASP.NET si es posible. Esta sería una respuesta MUY valorada, probablemente no solo para mí.

, gracias, gracias, gracias (para trabajar respuesta :-)

Respuesta

5

UpdatePanels son síncronos por diseño.

Si desea ejecutar varias solicitudes al mismo tiempo, deberá usar métodos de página, servicios AJAX o AJAX sin formato. De cualquier manera significa renunciar a ViewState.

Si desea representar controles ASP.Net de forma simultánea para múltiples solicitudes AJAX, puede crear pequeños archivos ASPX independientes que contengan los controles, enviarles solicitudes AJAX e insertar el HTML representado en el DOM. En jQuery, harías esto así: $('selector').load('something.aspx'). Tenga en cuenta que ni las devoluciones ni Viewstate funcionarían.

+0

Esa es probablemente la mejor respuesta que puedo obtener. Es un poco triste aprender eso y lástima que no se indique claramente en la ayuda/documentos. Aún más, el tipo de disparador AsyncPostBackTrigger sugeriría que UpdatePanel admite operaciones asíncronas. No quiero dividir la página en varias páginas secundarias, la solución no vale la pena. Pero, ¿cómo puedo usar métodos de página para eso? –

+0

¿Qué estás preguntando? – SLaks

+0

Los métodos de página no son lo que busco aquí. Probablemente JavaScript sería mi respuesta. Gracias. –

Cuestiones relacionadas