Wie aktualisiere ich eine Teilansicht alle 3 Sekunden in MVC 4?

Ich brauche, um einen Fortschrittsbalken zu aktualisieren, basierend auf der Anzahl der Arbeitsplätze abgeschlossen. Die Zahl der Arbeitsplätze abgeschlossen ist, werden auf der jobs-Tabelle in einer SQL Server DB. Ich brauche meine ASP.NET MVC 4-Anwendung zur Abfrage der DB alle 3 Sekunden für die Zahl der Arbeitsplätze konkurrieren und verwenden diese Daten zu aktualisieren, den Fortschritt-bar, die in einer Teilansicht. Der timer funktioniert und es ruft meine die _getforStatus Aktion in der StatusController, und es scheint zu rufen, die EntityDB, aber nie scheint zu rufen, die andere Ansicht als Sie vor die Zeitgeber. Wie bekomme ich den Fortschrittsbalken, um eine Aktualisierung alle 3 Sekunden?

Den header meiner _Layout.cshtml-Ansicht ruft die initiation der timer ist in der StatusController etwa so:

 <head>
      ...
       @Html.Action("InitTimer", 'Status")
      ...
 </head>

Auch in der _Layout Sicht nenne ich die partielle Ansicht in einem Jumbotron etwa so:

 <div class="jumbotron" id=progress">
      @{Html.RenderAction("_GetforStatus", "Status");}
 </div>

Den Status controller codiert ist etwa so:

 public class StatusController : Controller
 {
      IntegrationDBEntities _db;

      Private Timer timer1;

      Public void initTimer()
      {
           timer1 = new Timer();
           timer1.elapsed += new ElapsedEventhandler(timer_Elapsed(;
           timer1.interval = 3000;
           timer1.Start();
       }

      Private void timer_Elapsed(Object sender, EventArgs e)
      {
           _GetforStatus();
      }

      [ChildActiononly]
      public PartialViewResult _GetforStatus(0
      {
           _db = new IntegrationDBEntities();
           ViewDataModel - _db.Jobs.ToList();
           return partialView();
      }

BEARBEITEN:
Ich habe auch versucht, die folgenden Ajax-code. Ich bekam keine Fehlermeldung, aber meine Statusleiste nicht aktualisiert:

 <script>
       function loadPartialView()  {
            $.ajax({
                 url:  '@url.Action("_GetforStatus', "Status")",
                 type:  'GET',
                 dataType:  'html',
                 success: function(result)  {
                      $('progress').html(result);
                 }
            });
        }

  $function () {  
       loadPartialView();
       window.setInterval("loadPartialView()", 3000);
  });
 </script>

Ich bin nicht sicher, wenn es nicht funktioniert, bc habe ich nicht vertreten "Html.RenderAction" in JS richtig oder was.

für Sachen wie diese lieber benutze ich ein jquery-timer auf die Ansicht sitepoint.com/settimeout-example. in der timer-ein ajax-Aufrufs der teilweisen oder einfach nur die Daten, die Sie benötigen, die Statusanzeige zu aktualisieren
Ich habe versucht, nach einem anderen questiion gab, dass eine Ajax-Lösung, um eine ähnliche Frage, aber ich konnte es nicht funktionieren. Könnten Sie mir zeigen ein Beispiel mit meinem code oben, wie genau würde ich diese umsetzen mit razor-syntax?
kannst du posten, was du versucht hast mit deinem ajax-Aufruf, und lassen Sie mich wissen, was Fehler, die Sie immer waren?
ich bearbeitet habe, oben.
Es sieht aus, als ob es nicht nach dem aufrufen des Skripts. Muss ich im code etwas in den Kopf um es zu bekommen, es zu Lesen?

InformationsquelleAutor antman1p | 2015-02-19

Schreibe einen Kommentar