2009-07-13 14 views
1

Ich erzeuge lässt sagen, 1000 Datensätze in eine Datenbank. Das heißt, es braucht etwas Zeit. Jetzt kann ein Benutzer ungeduldig werden. Also möchte ich ihm während des Generierungsprozesses einen Fortschrittsbalken zeigen, der im Controller passiert. Ich habe ziemlich coole Fortschrittsbalken in jQuery oder Flash gefunden, aber ich habe keine Ahnung, wie man sie benutzt, da nach dem Senden einer Anfrage an eine Aktion die ersten Daten, die ich bekomme, um eine neue Ansichtsseite zu erstellen (ich weiß) Die Controller-Aktion wird beendet.Allmählich Daten zum Anzeigen von asp.net mvc

Irgendwelche Ideen, wann der Fortschrittsbalken angezeigt werden soll und wie einige Daten an ihn gesendet werden, damit er "geladen" wird?

Vielen Dank im Voraus.

Antwort

1

Ich bin neu in ASP MVC machen (und Überlauf STCK). Aber mein Ansatz wäre, den Datensatzgenerierungsprozess in einem neuen Thread zu starten. Umleiten zu einer Ansicht, die eine Teilansicht mit der Fortschrittsleiste lädt. Aktualisieren Sie dann die partielle mit einem Skript für diese Ansicht. smthing wie:

<div id="documents-partial"> 
    <% if (ViewData["IsDone"] == false) { %> 
    <% Html.RenderPartial("ProgressBar", ViewData["Progress"]); %> 
    <% }else{ %> 
    <% Html.RenderPartial("Records", ViewData["Records"]); %> 
    <% } 
</div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
    update(); 
    } 
    function update(){ 
    $('div#id-of-where-you-want-to-load-partial-view').load('/Records/CheckForUpdate', {param1: <%= ViewData["Progress"].Id %>}, update /*on callback calls the update method again*/); 
</script> 
1

Vielleicht sollten Sie Serveraufruf als Ajax-Request

0

Ein Weg, ich war für die Buildteamcity auf dem webinterface sah.

Es zeigt den Fortschritt für Ihren Build. Der Fortschrittsbalken wird auf die Dauer des letzten Builds gesetzt.

Es funktioniert nicht perfekt, aber gut genug, um nützlich zu sein. Wenn die geleistete Arbeit immer vergleichbar ist (wie die Dauer eines Builds), könnten Sie es auf diese Weise versuchen.

0

wenn Sie Ajax verwenden die Datensätze zu holen, dann können Sie diese verwenden,

// Progress Bar ----------------------------- 
$().ajaxSend(function(r, s) { 
    $("#contentLoading").show(); 
}); 

$().ajaxStop(function(r, s) { 
    $("#contentLoading").fadeOut("fast"); 
}); 
//------------------------------------------- 


<img id="contentLoading" src="../../Content/images/ajax-loader.gif" style="display:none" alt="Updating ..." /> 

Dieser Code wird ein animiertes Gif Fortschrittsbalken, während eine Ajax-Anforderung ausgeführt wird ein- und ausblenden.

Verwandte Themen