2012-03-27 10 views
0

Ich habe eine Webseite, auf der ich Ajax aktiviert Update-Fortschrittsbalken auf Senden-Schaltfläche anwenden. In dieser Schaltfläche klicken Sie auf ich mache einige Datenbank-Operationen und wenn Operationen sind erfolgreich dann Seite ist server.transfer auf eine andere Seite.Ajax Enabled Update-Fortschrittsbalken auf server.transfer

Mein Problem ist, dass ich Fortschrittsbalken auf dieser Schaltfläche senden muss und Seite sollte auf eine andere Seite umleiten. Aber ich bekomme . Ich kann nicht response.redirect aufgrund einiger Sicherheitsfunktionen verwenden, bitte geben Sie mir Lösung oder umgehen, um Seitenanforderungsmanager Ausnahme zu vermeiden.

+0

Sie versuchen einen Server.Transfer innerhalb einer AJAX (UpdatePanel oder eine solche Klasse) Anfrage? –

+0

ja Ich versuche einen Server.Transfer in einem AJAX (UpdatePanel). Gibt es eine Alternative zu Server.Transfer innerhalb eines AJAX (UpdatePanel), weil jedes Mal, wenn ich Seite Request Manager Ausnahme wegen Rendering einer anderen Seite HTML-Tag bekommen. –

+0

Sie können die Seite im AJAX-Postback nicht übertragen/umleiten. Der AJAX erwartet, dass nur das Markup das dynamische Steuerelement ersetzt, nicht eine ganze Seite, damit Ihr Modell nicht funktioniert. Ersetzen Sie das UpdatePanel-Postback durch ein jQuery-Skript, wie [die Antwort auf diese Frage] (http://stackoverflow.com/a/1538548/1223642). –

Antwort

0

Vielen Dank für Ihre Antwort, Sie haben einen guten Vorschlag gegeben, ich habe auch eine Lösung für dieses Problem, das ich teilen möchte, es funktioniert gut für mich. Weil mein Problem ist, versteckte Variablen und Server zu pflegen. Transfer, also habe ich meinen Code so gelegt. Ich habe 2 Schaltflächen eine innerhalb Update-Panel und eine andere außerhalb der Update-Panel, wenn im Update-Panel Schaltfläche Klick Ereignis wird dann wird es Datenbankoperationen und nach erfolgreichen db-Operationen wird es eine Java-Skript-Funktion von Server-Seite wie folgt aufrufen

protected void btnProceed_Click(object sender, EventArgs e) 
    { 
    //do your db operations 
    //After successful operations call java script 

     ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "displayNote"," <script language='JavaScript'>onAsyncPostclick();</script>", false); 

}

Java-Script-Code

<script type="text/javascript" language="javascript"> 
//ToDo: Used to call button on which we fire server.transfer 
     function onAsyncPostclick() { 
     var btnName = $get("<%=btnPostBack.ClientID%>").name; 
     __doPostBack(btnName, ""); 
    } 
</script> 

In diesem JavaScript-Code I Postbacks Anruf an eine andere Taste gelegt haben, die außerhalb von upd aß Panel und dass i Klick-Ereignis der Schaltfläche am Brennen Server .transfer auf neue Seite wie diese

//Implemented for button Submit (outside of Update panel) click 
    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Server.Transfer("NewPage.aspx"); 
    } 

In der obigen Art und Weise i Server.Transfer auf Ajax-fähigen Postbacks Klick aufrufen können, und ich sparte mein Code ab Seite Anfrage-Manager Ausnahme. Ich denke, es ist eine Arbeit für das Problem, aber es funktioniert gut für meine Anforderungen.

0

Laut meinem Kommentar oben können Sie die Seiten innerhalb eines AJAX-Postbacks nicht ändern. Stattdessen müssen Sie warten, bis die AJAX-Anforderung abgeschlossen ist, und Sie können die Erfolgs-/Fehlerergebnisse Ihrer Datenbankoption zurücksenden. Mit nur den Client-API von dem Script ausgesetzt, können Sie das folgende Skript verwenden:

<script type="text/javascript"> 
<!-- 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_endRequest(EndRequest); 
function EndRequest(sender, args) { 
    // TODO: Validate args indicates success. 
    var isSuccess = true; 
    if (isSuccess) 
     window.location = "SecondPage.aspx"; 
} 
// --> 
</script> 

Dieses Skript direkt im Anschluss an Ihrer Script Erklärung, ändern nach Ihren Bedürfnissen Erfolg und direkt auf die richtige Seite zu validieren.

Verwandte Themen