2016-04-15 3 views
2

Nach vielen Recherchen habe ich noch keine Antwort.Server.Transfer funktioniert nicht

Ich benutze Webformular app VS 2013

Mein Code ist ziemlich einfach:

Server.Transfer("~/Success.aspx",true); 

Nach diesem Lastfall Success.aspx ausgeführt, sondern im Browser nur ich original Hauptform sehen.

habe ich ein leeres Web-Formular mit nur einem Knopf auf, aber nach

Server.Transfer("~/WebForm2.aspx",true); 

noch dem folgenden Code läuft ich MainForm.aspx sehen, (Ereignishandler Page Load von WebForm2 läuft)

== ======================

Update per IrishGrifgin Kommentare.

Ich habe tatsächlich aJax in meinem Code. Ich habe UpdatePanels, die Ajax verwenden. Wenn dies das Problem für Server.Transfer ist, wie können wir das beheben?

+1

Rufen Sie dies auf einer AJAX-fähigen Seite an? – IrishChieftain

+0

Ich denke nicht. Wie kann ich das überprüfen? –

+2

Versuchen Sie nicht, eine Lösung zu finden, verwenden Sie besser eine andere Art der Gestaltung Ihrer Seite. Der Server.Transfer ist großartig, aber wenn Sie nicht verstehen können, was wirklich ist, dann vermeiden Sie es.Und in den meisten Fällen kann nicht mit komplizierten Seiten arbeiten, kann nicht einige der Postbacks tun ... einfach, andere Wege finden - Server.Transfer funktioniert - aber was ist getan ist nicht das, was Sie erwarten ... – Aristos

Antwort

1

Endlich fand ich die Lösung. Vielen Dank für Ihre Hilfe (+1 für alle, die mir eine Idee gegeben haben).

war also hier mein Code:

cs: Server.Transfer("~/Success.aspx",false);

HTML:

<div id="submit">     
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" UseSubmitBehavior="False" />     

</div> 

Als Schaltfläche erwähnt Senden innerhalb eines Update-Panel war. In diesem Fall müssen wir den folgenden Code verwenden:

<Triggers> 
     <asp:PostBackTrigger ControlID="btnSubmit" /> 
    </Triggers> 

Dieser Code im Grunde macht die Ausführung des Absenden-Button Synchrone (überschreibt das Verhalten-Update-Panel).

1

Ohne viel vom Code zu sehen, ist es schwierig, dieses Problem wirklich zu beheben. Verwenden Sie stattdessen die Response.Redirect-Funktion.

Response.Redirect("~/Success.aspx"); 
+0

ist ein Vorschlag, aber keine Antwort auf die Frage. – Aristos

+0

Der OP stellte keine Frage. Er erwähnte auch nicht, dass Response.Redirect aufgrund einer Geschäftsregel nicht verwendet werden konnte (ich bin mir nicht sicher, welche Art von Geschäftsregel das wäre). Response.Redirect behandelt normalerweise, was er anforderte. Dotctor hatte auch eine ähnliche Antwort angesichts der begrenzten Informationen in der ursprünglichen Post zur Verfügung gestellt. –

+0

Dotctor ist eine Antwort geben, antworten Sie mit einer anderen Frage ... – Aristos

2

Ich glaube nicht, dass Sie verstehen, was Server.Transfer() tut.

Sie leitet den Code vorübergehend um, um den Code auf der zweiten Seite auszuführen. Die Kontrolle wird jedoch auf die ursprüngliche Seite zurückgesetzt, sobald sie abgeschlossen ist. Es ist durchaus möglich, dass der Browser das HTML von der zweiten Seite nicht bekommt (oder sieht).

Siehe https://msdn.microsoft.com/en-us/library/ms525800(v=vs.90).aspx

Wenn Sie völlig die Kontrolle wollen, dann eine zweite Seite wenden Sie Response.Redirect verwenden müssen. Wenn Ihre Geschäftsregeln angeben, dass Sie das nicht verwenden können, würde ich Ihnen vorschlagen, die Geschäftsregeln erneut zu lesen und sie zu ändern.

Verwandte Themen