Was bedeutet IsPostBack eigentlich?

7

Ich bin daran interessiert zu wissen, was genau Page.IsPostBack bedeutet. Ich bin mir dessen bewusst, dass es täglich in einer ASP.NET-Standardseite verwendet wird, die angibt, dass der Benutzer es ist Zurücksenden von Daten an die Serverseite. Siehe Seite: IsPostBack-Eigenschaft

Aber angesichts dieses HTML

%Vor%

Wenn Sie auf die Schaltfläche Submit klicken, wird die Seite Page_Load-Methode aufgerufen, aber die Page.IsPostBack gibt false zurück. Ich möchte runat=server nicht hinzufügen.

Wie erkenne ich den Unterschied zwischen dem erstmaligen Laden der Seiten und einer Anfrage, die vom Client beim Senden verursacht wurde?

update
Ich habe in <input type="text" value="aa" name="ctrl" id="ctrl" /> hinzugefügt, so dass das Request.Form ein Element hat und Request.HTTPMethod ist POST, aber IsPostBack ist immer noch falsch?

    
Dead account 06.05.2009, 12:04
quelle

5 Antworten

6

Eine Möglichkeit besteht darin, die ASP.NET Page-Klasse zu erweitern, die IsPostBack-Eigenschaft zu überschreiben und alle Ihre Seiten von der erweiterten Seite ableiten zu lassen.

%Vor%     
Allrameest 06.05.2009, 12:31
quelle
12

Überprüfen Sie die Request.Form-Auflistung, um festzustellen, ob sie nicht leer ist. Nur ein POST enthält Daten in der Request.Form-Auflistung. Wenn es keine Formulardaten gibt, ist die Anfrage natürlich nicht von einem GET zu unterscheiden.

Was die Frage in Ihrem Titel betrifft, wird IsPostBack auf "true" gesetzt, wenn die Anfrage ein POST von einem serverseitigen Formularsteuerelement ist. Deine Form nur auf der Client-Seite zu machen, besiegt dies.

    
tvanfosson 06.05.2009 12:10
quelle
1

In dem Beispiel, das Sie in Ihre Frage einbeziehen, ist kein Viewstate beteiligt. Es gibt keine Möglichkeit für den Server, diese Anforderung mit einer vorherigen Anforderung der Seite zu verknüpfen und sie als eine Einheit zu behandeln. Die Anfrage, die zum Klicken auf die Schaltfläche führt, sieht wie jede andere zufällige Anfrage aus, die zum Server kommt.

    
Fredrik Mörk 06.05.2009 12:09
quelle
1

Im Allgemeinen könnte man einen PostBack als Kombination von:

sehen
  1. HTTP-Anfrage-Methode entspricht "POST"
  2. Der HTTP-Header HTTP_REFERER entspricht der aktuellen URL

Das ist nicht 100% idiotensicher, es berücksichtigt keinen Zustand irgendeiner Art (den Sie wahrscheinlich wollen, auch wenn Sie es nicht wissen), aber es ist ein Beitrag , Zurück zur aktuellen Seite.

    
Kris 06.05.2009 12:18
quelle
0

Sie könnten die Header überprüfen, um zu sehen, ob Ihre Eingabe Steuerelemente einen Wert zurückgeben (indem Sie Request.Forms verwenden, wie tvafosson darauf hinweist). Die wirklich große Frage ist jedoch, warum Sie nicht runat = server hinzufügen möchten. Das gesamte von ASP.NET implementierte Seitenverarbeitungsgebäude (außer MVC) hängt von der Verarbeitung der Seitenausgabe über den Server ab, um den entsprechenden clientseitigen Code für Rückrufe usw. einzurichten.

    
Mark Brittingham 06.05.2009 12:09
quelle

Tags und Links