2010-02-24 5 views
6

Question de mourir experts hard asp.net. J'ai passé beaucoup de temps à essayer de trouver une réponse ou à le faire moi-même mais pas de chance jusqu'à présent.Callbacks asynchrones simultanés

Application Web ASP.NET. Je prévois d'améliorer le temps de chargement de la page pour que l'expérience utilisateur soit meilleure. Je veux retarder le chargement des sections de la page en utilisant UpdatePanels. Je peux faire une mise à jour UpdatePanel elle-même juste après le chargement de la page à l'aide de la minuterie avec un intervalle minimum. Cela fonctionne très bien, mais les étapes commencent lorsque vous essayez de le faire avec plusieurs UpdatePanels. Fondamentalement, ce qui se passe, c'est que tous les panneaux sont mis à jour mais séquentiellement plutôt que tous en même temps.

Maintenant, j'ai lu que cela est dû au fait que chaque résultat de publication asynchrone porte une pleine page viewstate et pour éviter les incohérences viewstate les publications asynchrones sont sérialisées. En fait, ils disent que seul le dernier rappel serait réussi, donc je suis chanceux de les avoir numérotés, je suppose.

Et maintenant la grande question: est-ce que quelqu'un a trouvé un moyen de contourner le problème? Dans ASP.NET si possible. Ce serait une réponse TRÈS précieuse probablement pas seulement pour moi.

Merci, merci, merci (pour le travail réponse :-)

Répondre

5

UpdatePanels sont synchrones par la conception.

Si vous souhaitez exécuter plusieurs demandes simultanément, vous devez utiliser des méthodes de page, des services AJAX ou AJAX brut. De toute façon signifie abandonner sur ViewState.

Si vous souhaitez rendre des contrôles ASP.Net simultanément pour plusieurs requêtes AJAX, vous pouvez créer de petits fichiers ASPX indépendants contenant les contrôles, leur envoyer des requêtes AJAX et insérer le HTML rendu dans le DOM. En jQuery, vous feriez ceci comme ceci: $('selector').load('something.aspx'). Notez que ni les publications ni viewstate ne fonctionneraient.

+0

C'est probablement la meilleure réponse que je peux obtenir. C'est un peu triste d'apprendre cela et dommage qu'il ne soit pas clairement indiqué dans help/docs. Plus encore, le type de déclencheur AsyncPostBackTrigger suggère que UpdatePanel prend en charge les opérations asynchrones. Je ne veux pas diviser la page en plusieurs sous-pages - une solution qui ne vaut pas la peine. Mais comment puis-je utiliser des méthodes de page pour cela? –

+0

Que demandez-vous? – SLaks

+0

Les méthodes de page ne sont pas ce que je suis après ici. Probablement JavaScript serait ma réponse. Merci. –