2009-04-01 6 views
3

J'ai cette situation: J'ai une page où j'ai une liste d'événements d'une journée. Et ces événements peuvent être changés en statut "Confirmé" ou "Annulé". Mais, lorsque je clique par exemple sur 'Confirmé', cet état est sauvegardé sur SQL Server et ce statut est 'Confirmé'. Mais, si une autre personne a cette même page ouverte au moment où j'ai changé le statut de l'événement, cette personne ne verra pas le nouveau statut. Il verra seulement s'il recharge la page.Existe-t-il un moyen de déclencher un événement de serveur avec jQuery ou ASP.NET MVC?

Je sais qu'il existe un Ajax TimeOut qui rafraîchit la page toutes les 5 ... 10 ... 15 secondes. Mais je pensais s'il y a un déclencheur jQuery ou ASP.NET MVC que lorsque je change l'état de l'événement, le serveur répond avec un rafraîchissement du navigateur.

Y at-il une solution pour cela?

Merci!

Répondre

1

Option 1: Utilisez jQuery Timer et mettez à jour votre contrôle sur la page toutes les X secondes. (Vous n'avez pas besoin de recharger toute la page, seulement les états de vos contrôles avec les statuts confirmés/annulés, et ne les changer que si le serveur a retourné de nouvelles valeurs).

Option 2: Vous pouvez déclencher un événement sur la page à partir de votre serveur en utilisant Silverlight 2+.

Indice: lorsque vous mettez à jour l'état initial de réussite du contrôle (confirmé/annulé). Ainsi, si un utilisateur a un statut mis à jour de confirmé à annulé, un autre utilisateur qui essaiera de mettre à jour ce statut de confirmer à annulé recevra un message d'erreur amical.

+0

Aucune des options ne me convient ... :-(Ce dont j'ai besoin est de rafraîchir une autre page quand je change un statut d'événement – AndreMiranda

+0

l'option 1 fonctionnerait alors ... –

+0

Ensuite, vous devriez mettre le timer sur ce " autre "page –

0

En résumé: non.

Le serveur ne se souvient pas de l'endroit où il a envoyé les pages. Une fois que le serveur envoie une page au navigateur, il met fin à la connexion. Pour cette raison, le serveur n'aurait aucune idée où envoyer des instructions de rafraîchissement ou une nouvelle page. Pour effectuer des mises à jour «en temps réel» sur une page Web, le navigateur doit lancer l'appel.

0

Vous pouvez utiliser des gestionnaires asynchrones dans ASP .NET pour l'implémenter. Cela signifie que vous pouvez vous abonner à un événement de mise à jour sur le serveur et que le serveur conserve la requête (qui ne consomme aucun thread de travail entre temps), et lorsque l'état est mis à jour, la requête est terminée et la réponse au nouveau statut est envoyé au client.

Questions connexes