2009-12-10 11 views
0

Dans mon cours de contrôleur, je renvoie des données à mon affichage et tout est bon.MVC: Comment actualiser une vue

Puis-je faire quelque chose comme ça?

public ActionResult List() 
    { 
     while (true) 
     { 

      Thread.Sleep(3000); 

      return View("ListStatus", data); 
     } 

    } 

Bien sûr, le code ci-dessus ne fonctionnera pas car, lorsque l'instruction return est exécutée, la fonction existe.

Je suis sûr que je peux utiliser un Ajax dans la vue elle-même pour extraire des données à partir du serveur Toutes les 3 secondes, mais pour mon but actuel il serait tout simplement plus facile de faire ce que je tente dans le code ci-dessus

+0

Voir [cette réponse] (http://stackoverflow.com/questions/5396282/auto-refresh-in-asp-net-mvc/5396312#5396312) à une question plus tard . –

Répondre

5

Il semble que vous essayez d'effectuer l'actualisation du côté serveur. Comme "pousser" les mises à jour au client. Ce n'est pas comme ça que fonctionne asp.net. Le client effectue une demande et le serveur envoie alors une réponse . Cela seul signifie que vous ne pouvez pas faire ce qui précède. Comme jcm l'a dit, vous devez demander au client/navigateur de faire des demandes de suivi pour les données mises à jour. Je suggérerais une option js/ajax/jQuery. Vous pouvez google et obtenir des tas d'exemples.

+0

ce n'est pas comment le web fonctionne, encore moins asp.net. – darasd

+0

Techniquement, vous pouvez garder une connexion ouverte et y ajouter des données au fil du temps. Mais c'est un comportement très dépendant du navigateur et pas quelque chose que vous voudriez faire (au moins avec la technologie d'aujourd'hui, voir HTML5 Websockets). Si vous voulez une connexion persistante, utilisez flash, une applet java ou silverlight. – Matt

+0

Websockets sonne vraiment comme une belle façon dans le futur. (futur en gras) http://dev.w3.org/html5/websockets/. Ce projet est sorti hier. –

Questions connexes