2009-05-23 6 views

Répondre

3

Regardons les options:

Javascript?

Cela fonctionne très bien, tant que l'utilisateur ne l'a pas désactivé.

Actualisation du méta-tag?

Méthode déconseillée en faveur de la méthode Javascript. Cependant, vous pouvez l'utiliser comme sauvegarde si l'utilisateur a désactivé Javascript.

Response.Redirect (à l'auto)

qui ne fonctionne pas, comme le navigateur ne serait pas montrer anyhing utile pour l'utilisateur tout en réorientant. En outre, le navigateur arrêtera de demander après un certain nombre de redirections pour protéger l'utilisateur contre les redirections infinies.

Server.Transfer (à l'auto)

ne fonctionne pas non plus, comme le code sur le serveur serait juste boucle sans rien envoyer au navigateur. L'effet est le même que d'avoir une boucle dans votre code.

Panneau de mise à jour Ajax?

Fonctionne correctement, tant que l'utilisateur n'a pas désactivé Javascript. C'est fondamentalement la même chose que la première option, seul le Javascript fait la demande lui-même au lieu de laisser le navigateur faire la demande.

2

Consultez cet article au Asynchronous Pages. Voici également un exemple de CodeProject qui inclut des pages asynchrones et META-REFRESH.

+0

Les pages asynchrones dans ASP.Net s'exécuteront sur un autre thread, mais ne seront pas meilleures sur les problèmes de temporisation (time-out des scripts ASP.Net pour l'équilibrage de la charge) –

0

Je vous recommande d'utiliser Ajax et d'afficher un UpdateProgress afin que l'utilisateur sache qu'il est encore en train de tourner.

1

Vous trouverez un exemple d'implémentation de ce type de fonctionnalité dans le kit de démarrage Beer House: http://www.asp.net/Downloads/starter-kits/the-beer-house/.

Les pages SendingNewsLetter.aspx et SendNewsLetter.aspx vous seront utiles. Cela peut être exagéré pour votre besoin - il montre même la progression de l'opération de longue durée.

1

Qu'en est-il de l'utilisation du AJAX WebModalAnchor pour faire apparaître une fenêtre avec un bouton Annuler?

Hope this helps,

Bill

3

Si vous pouvez signaler tout progrès à l'utilisateur, j'ai tendance à courir avec une asxh et une variation d'un forever frame. Ajouter un peu de jQuery UI Dialog et jQuery UI Progress Bar et vous avez une façon brillante de retenir l'attention des utilisateurs pendant que vous faites le gros du travail sur le serveur.

J'ai donné un exemple de code au 874204 qui montre la technique.

Si vous ne pouvez pas donner de progrès à l'utilisateur, j'ai tendance à toujours utiliser la boîte de dialogue de l'interface utilisateur et afficher un message "please wait, processing ..." avec un web gif.

+0

Lisez votre réponse - c'est une bonne chose. Je suis impatient de l'essayer. –