Wie kann ich feststellen, ob eine Anfrage das Ergebnis eines Postbacks ist?

7

Aktualisieren

Ich implementiere eine benutzerdefinierte Seiten-Caching-Lösung, und ich möchte nicht, dass die Anfrage zwischengespeichert oder aus dem Cache abgerufen wird, wenn sie auf eine Formularübermittlung oder eine Art ASP.net-Postback zurückgreift.

Ich versuche herauszufinden, ob das aktuelle HttpRequest ein Postback ist. Gibt es eine Möglichkeit, dies außerhalb des Kontextes einer Seite oder einer anderen Benutzersteuerung zu tun? Anders gesagt, wenn ich innerhalb eines HttpModules bin, habe ich keinen Zugriff auf this.IsPostBack , aber ich muss immer noch feststellen, ob es tatsächlich ein Postback ist.

Gibt es Postbacks auch immer "Post" -Anfragen oder ist das durch das Enthalten von Formular bestimmt?

Danke!

    
Micah 05.08.2010, 17:14
quelle

5 Antworten

9

Überprüfen Sie die Eigenschaft Method des HttpWebRequest . Postbacks sollten als POST in Method markiert werden.

Die Art und Weise, wie Sie es in Old-School-ASP getan haben, bestand darin, nach erwarteten Post-Back-Parametern im Hauptteil der HTTP-Nachricht ( Request.Form ) zu suchen. Sie könnten den Inhalt der Anfrage nach Daten überprüfen, die wie Postback-Parameter aussehen. Ich bin mir nicht sicher, mit welchem ​​Objekt Sie gerade arbeiten, aber wenn es sich um HttpWebRequest handelt, können Sie den Anforderungsstream von der Methode GetResponseStream() des Objekts überprüfen.

    
Ben McCormack 05.08.2010 17:23
quelle
6
%Vor%     
jessegavin 05.08.2010 17:24
quelle
5

Die folgende statische Routine sollte in der Lage sein zu bestimmen, ob die aktuelle Anfrage ein Postback ist oder nicht. Es wird jedoch nur funktionieren, wenn Sie eine ASPX-Seite oder eine davon abgeleitete Seite ausführen.

%Vor%

Beachten Sie auch, dass CurrentHandler möglicherweise noch nicht initialisiert wurde, abhängig davon, in welcher Phase des Anforderungslebenszyklus Sie versuchen, IsPagePostBack auszuwerten. Ich glaube, dass diese Methode nur zwischen HttpApplication.PostMapRequestHandler und HttpApplication.ReleaseRequestState gültig ist.

    
Rabid 05.08.2010 18:16
quelle
3

Ein HTTPHandler hat Zugriff auf den aktuellen HTTPContext. Damit prüfen Sie einige Eigenschaften (Request.RequestType, Request.URLReferrer) und entscheiden manuell, ob es sich um ein PostBack handelt.

    
ThatSteveGuy 05.08.2010 17:32
quelle
1

Sie können einen Verweis auf die aktuelle Seite erhalten: Holen Sie sich das aktuelle System.Web .UI.Page von HttpContext?

Dann können Sie nach der Page.IsPostBack-Eigenschaft suchen.

    
David 05.08.2010 17:27
quelle

Tags und Links