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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie brauchen, um einige änderungen an deinem ajax-Aufruf. Hier ist ein Beispiel, wie ich den Anruf
auf dem controller denke ich nicht, dass müssen Sie die untergeordnete Aktion nur. Auch das Sie wieder eine leere partielle view-Objekt. Es sollte
schließlich in Ihre jquery, um den Anruf zu halten geschieht, müssen Sie die Aufzeichnung des Anrufs. Probieren Sie etwas wie dieses
Auch, was ist '.divpartial " und "frmUser"?
ja, das wird im script-tags. Es ist nur ein Beispiel. Wenn Sie übergeben möchten, etwas zurück an den controller, Sie können es tun, durch das data-Attribut. Wenn Sie nicht wollen, Sie können entfernen Sie das Attribut. div partial ist ein Selektor für ein element auf dem Formular (wie ein div), in dem der zurückgegebene seitlichem Blick genommen werden.
wenn Sie sich Ihre Konsole über den browser sind Sie immer Fehler? setzen Sie einen Haltepunkt in den code, und stellen Sie sicher, es ist der erste Treffer? Übergeben ein Modell der teilweisen würde man es dort. Wenn Sie nicht ein Modell haben, lassen Sie diese aus
Ihre Ansicht ist nicht zu sehen. Blick auf die Quelle, auf die Sie Ihre Ansicht und stellen Sie sicher, dass die Referenz ist da, und stellen Sie sicher, dass die url in das link gültig ist
InformationsquelleAutor Matt Bodily