2009-08-24 11 views
2

Ich habe eine ASP.NET2.0-Webseite mit einer Submit-Schaltfläche. Wenn der Benutzer klickt, erzeuge ich eine XML-Datei im laufenden Betrieb und gebe diese als Ergebnis zurück. HierVerlust der Rückwärtsnavigation in ASP.NET

ist der Code:

protected void submitBtn_Click(object sender, EventArgs e) 
    { 
     string result = this.ProduceMyXmlResult(); 

     this.Response.Clear(); 
     this.Response.StatusCode = 200; 
     this.Response.ContentType = "application/xml"; 
     this.Response.ContentEncoding = System.Text.Encoding.UTF8; 
     this.Response.Write(result); 
     this.Response.End(); 
    } 

Das Stück Code tut genau das, was ich will. Der Browser erkennt die XML-Datei jedoch nicht als neue Seite, sodass ich mit der Schaltfläche BACK nicht zur ursprünglichen Seite zurückwechsle. Warum und wie kann ich das überwinden?

Antwort

4

Die einfachste Möglichkeit, dies zu tun, denke ich wäre, eine separate Seite zu erstellen, die diesen Code auf Page_Load() ausführt und umleiten, wenn die Schaltfläche gedrückt wird.

Der Grund, warum Sie keine Rückwärtsnavigation haben, ist, dass der Browser nicht weiß, dass sich die Seite geändert hat. Da die Schaltfläche "Senden" ein Postback vornimmt und Sie XML-Daten als Antwort auf dieses Postback zurückgeben, erscheint es dem Browser so, als ob dies nur eine Umwandlung der aktuellen Seite wäre (so als würden Sie beispielsweise die Text eines Label-Steuerelements).

Der "richtige" Weg, um dies zu erreichen wäre mit einer Art von HTTP-Handler, aber ich habe nicht die Erfahrung, den richtigen Weg zu empfehlen, und Sie haben bereits C# Code-Behind für diese Methode.

+0

+1 besser als meine Idee. – MusiGenesis

+0

+1 für einen HTTP-Handler (d. H. Implementieren Sie IHttpHandler + web.config Magie oder fügen Sie eine ASHX-Datei - eine "Seite" wie Wrapper um IHttpHandler ohne web.config stuff) – veggerby