2010-12-22 6 views
1

Ich möchte den Fortschrittsbalken anzeigen, wenn der Benutzer das Formular abschickt, da dieser Vorgang einige Zeit in Anspruch nehmen kann, etwa 8 bis 10 Sekunden, also möchte ich den Fortschrittsbalken anzeigen habe eine Vorstellung davon, wie viel Zeit es dauern wird. Dieser Prozess wird beim einfachen Aufruf einer Controller-Aktion wie normales Postback ohne Ajax ausgeführt. Also, wie kann ich diese Aufgabe erreichen i asp.net MVC bin mit 2Fortschrittsbalken beim Aufruf des Controllers in Asp.Net MVC 2

+0

Und woher wissen Sie, dass es dauert 8 bis 10 Sekunden? Wenn Sie wissen, wie Sie diese Werte programmatisch erhalten, können Sie einen Fortschrittsbalken mit einfachem Ajax erstellen. Es ist unmöglich, einen Fortschrittsbalken zu erstellen, ohne zu wissen, wo du bist und wann du die Aufgabe beendest. – goenning

Antwort

2

Fraz,

Während ich merke, sagen Sie NEIN Ajax BETEILIGT, dachte ich, das für Informationen Zwecke in Futter würde.

Solange Sie sich nicht um den "pase wait" Indikator kümmern, der den genauen Fortschritt anzeigt, gibt es einen einfachen Weg dies mit jquery zu tun und meine Antwort hängt davon ab.

Erstellen Sie im Grunde eine "Warte" -Ansicht, die eine einfache Nachricht mit einem darin eingebetteten animierten GIF enthält. abfeuern dann nur Ihren Einsatzes (oder die Aktion mit langer Laufzeit) über die folgenden Grundzug:

$(document).ready(function() { 
    $('#btnSave').click(function() { 
     $.ajax({ 
      type: "POST", 
      url: '<%=Url.Content("~/Booking/Save") %>', 
      data: { data: prepareData() }, // your data properties to be saved 
      beforeSend: beforeQuery(), 
      success: function(data) { 
       saveDataResponse(data); 
      }, 
      error: function(xhr) { alert(xhr.statusText); } 
     }); 

    }); 
}); 

// here we show the 'wait' view prior to processing starting 
function beforeQuery() { 
    var url = '<%= Url.Action("Wait", "Booking") %>'; 
    $("#mainDiv").load(url); 
} 

// when the long running process has completed (or error'd) 
// either populate mainDiv with the details view of the booking 
// or show the error appropriately 
function saveDataResponse(data) { 
    if (data.length != 0) { 
     if (data.indexOf("ERROR:") >= 0) { 
      $("#mainDiv").html(data).css('backgroundColor','#eeaa00'); 
     } 
     else { 
      $("#mainDiv").html(data); 
     } 
    } 
} 

offensichtlich, gäbe es für Fehler conditons usw. ein wenig mehr beteiligt sein, aber das ist die grundlegende ‚Vorlage‘.

hoffe das hilft

Verwandte Themen