Die beste Erklärung, die ich für ein PostBack gefunden habe, stammt aus dem Wiki.
Ein Postback ist ein HTTP-POST auf derselben Seite, auf der sich das Formular befindet.
Der Artikel erklärt zwar, wie eine zweite Seite in ASP benötigt wurde, in ASP.NET jedoch nicht mehr benötigt wird, enthält jedoch nicht viele Details oder Hintergrundinformationen. Ich suche nach einer verdammten Menge an Informationen über PostBacks. Ähnlich wie die einfache Frage "Wie kann ich ein Haus putzen?" Kann dieses Buch mit 900 Seiten behandelt werden . Ich brauche keine 900 Seiten, aber Details bitte. Ich habe ein nettes kleines Tutorial für den ASP.NET-Lebenszyklus gefunden, das jedoch (unter anderem) Postbacks ernsthaft beschönigt.
Ich freue mich auf die Entwickler, die schon vor .NET waren und solche Dinge wirklich nicht für selbstverständlich halten. Bücher und Hyperlinks sind sinnvolle Antworten oder Ergänzungen zu Ihrer Antwort.
Antworten:
Bisher habe ich wiederholt die richtige Antwort gesehen, auf die angespielt wurde, und fast jeder hat sich gescheut, was ich subjektiv als Marke betrachte.
Beginnen wir mit den Grundlagen:
Eine HTTP-Anforderung kann eines der HTTP-Verben sein , aber die beiden, die am häufigsten verwendet werden, sind GET und POST. Nun, das sind die beiden, die ein Programmierer am häufigsten verwendet. Die anderen haben alle einen Zweck, wenn sie auf dem Server implementiert sind. Wenn Sie Informationen an den Server senden, können Sie dies entweder über die URL (zum Anfordern einer Seite) oder innerhalb des Hauptteils der Anforderung (z. B. POST, PUT, DELETE) tun.
Jetzt werden Sie bemerken (ich bin sicher), dass die URL in einer GET-Anfrage häufig Daten enthält, und dies ist wahr, aber laut W3C sollten Sie GET nicht verwenden, um den Status zu ändern, und dennoch tun wir dies häufig. Es ist eine Art Hack, dem wir alle zustimmen, dass es sich um eine tatsächliche Verwendung handelt und nicht um einen Hack. Ob dies ein Hack oder ein tatsächliches Implementierungsdetail ist, überlasse ich Ihnen.
Wenn Sie also den Hauptteil des POST mit den Formularelementen senden (wobei Sie die anderen vorerst überspringen, können Sie dies von hier aus herausfinden), senden Sie bestimmte Elemente zurück. Wie diese Elemente definiert sind, hängt von Ihnen und der Umgebung ab, in der Sie arbeiten. Sie können auf einem Server mit einem JSON-Element im Hauptteil, mit XML oder mit Formularfeldern posten. Im Allgemeinen haben wir Beiträge aus einem FORM - Elemente in dem Körper des HTML.
Jetzt sagt jeder: "Oh, ein Postback ist eine nachfolgende Anfrage an eine Seite." Das stimmt aber nicht. Ein Postback ist, wenn Sie Daten per POST -> zurück an den Server senden. Ich sage dies, weil der Unterschied zwischen einer GET-Anfrage und einer POST-Anfrage darin besteht, dass Daten im Body enthalten sind (und das verwendete Verb, aber der Client weiß normalerweise, wie er damit umgehen soll). Sie können beim ersten Besuch der Seite ein Postback auf die Seite durchführen, und tatsächlich verfügt ASP.NET über Tools, die dies in der Bibliothek tun. Sie könnten sicherlich einen Desktop-Client POST-Daten auf einem Server haben (denken Sie an Twitter), ohne überhaupt eine Webseite vom Server anzuzeigen (ok, also ist Twitter wahrscheinlich nicht das beste Konzept, um hier ein Beispiel zu verwenden, aber ich möchte Ihnen das veranschaulichen kann einen Client verwenden, der die Webseite nicht anzeigt, daher ist keine Anforderung erforderlich).
Was Sie dort in "Postback" wirklich lesen sollten, ist "Ich poste Daten zur Verarbeitung zurück an den Server". Es wird davon ausgegangen, dass Sie die Seite zunächst mit einem GET abgerufen haben, um dem Benutzer das
<form>
Element anzuzeigen, über das<input>
Felder für die Interaktion verfügen, und dass Sie am Ende Daten zurücksenden. Aber ich hoffe, Sie können sehen, dass es nicht in dieser Reihenfolge sein muss.Hier ist noch etwas zu beachten:
Was wäre, wenn Sie dem Benutzer eine Seite mit einer Reihe von
<input>
s und nein geben würden,<form>
aber stattdessen eine in Javascript verdrahtete Schaltfläche hätten, mit der alle diese<input>
s verknüpft&value-n=
und als GET gesendet werden könnten? Tut das Gleiche, verstößt jedoch gegen das Konzept, GET nur für Anforderungen zu verwenden.(möglicherweise) dieanschließende Diskussion ermutigt mich zu bekräftigen, dass GET keine Nebenwirkungen haben sollte (keine Aktualisierung der Werte)So können Sie beispielsweise jemandem einen Link zu einer Google-Suche senden. Wir müssen also nicht IMMER auf den Server zurückschicken, um Daten zu erhalten.
Hoffe das hilft. Prost
quelle
Does the same thing, but violates that concept of only using GET for requests. (possibly)
Nein, möglicherweise darüber. GET-Anfragen sollten keine Nebenwirkungen haben. Sie sollten lediglich Daten anfordern (daher der Name GET ).POSTBACK: Teil der von ASP.NET erfundenen Technik, um die wahre Staatenlosigkeit des Web / HTTP hinter einer zustandsbehafteten Fassade zu verbergen. Dies führt zu komplexem Code (IsPostback, ...), einem schwer verständlichen Seitenlebenszyklus, vielen verschiedenen Ereignissen ... und zahlreichen Problemen (ViewState-Größe, Webfarm-Stickyness, Statusserver, Browser-Warnungen (ohne PRG-Muster)). , ...)
Siehe stattdessen ASP.NET MVC .
quelle
Unter Übersicht über den ASP.NET-Seitenlebenszyklus auf MSDN finden Sie eine gute allgemeine Einführung darüber, was passiert, wenn eine Anforderung den Server erreicht.
Ein PostBack ist eine Anfrage für eine Seite, die die nicht die erste Anforderung ist. Ein PostBack reagiert immer auf eine Benutzeraktion (am häufigsten durch eine Schaltfläche, ein AutoPostBack-Steuerelement oder Ajax ausgelöst).
quelle
Ein Post-Back ist eine Hin- und Rückfahrt vom Client (Browser) zum Server und dann zurück zum Client.
Auf diese Weise können Sie die Asp-Engine auf dem Server durchlaufen und alle dynamischen Inhalte aktualisieren.
Hier ist eine schöne Erklärung
quelle
ASP.Net verwendet ein neues Konzept (nun ja, neu im Vergleich zu asp ... es ist jetzt veraltet) von ViewState, um den Status Ihrer asp.net-Steuerelemente beizubehalten. Was bedeutet das? Kurz gesagt, wenn Sie etwas in ein Textfeld eingeben oder ein Dropdown-Menü aus einer Dropdown-Liste auswählen, werden die Werte gespeichert, wenn Sie auf eine Schaltfläche klicken. Altes Asp würde Sie zwingen, Code zu schreiben, um sich diese Werte zu merken.
Dies ist nützlich, wenn ein Benutzer auf einen Fehler stößt. Anstatt dass sich der Programmierer daran erinnern muss, jedes Websteuerelement neu zu füllen, erledigt der asp.net-Ansichtsstatus dies automatisch für Sie. Dies ist auch nützlich, da der dahinter stehende Code jetzt mit Intellisense auf die Werte dieser Steuerelemente in Ihrem asp.net-Webformular zugreifen kann.
Ja, wenn Sie auf derselben Seite posten, wird eine Schaltfläche "Senden" an einen Ereignishandler im Code hinter der Seite gesendet. Es liegt an der Ereignisbehandlungsroutine im Code dahinter, bei Bedarf auf eine andere Seite umzuleiten (oder eine Fehlermeldung an Ihre Seite zu senden oder was auch immer Sie sonst tun müssen).
quelle
Die Wikipedia-Definition von Postback ist ziemlich gut, aber ich möchte Folgendes hinzufügen: Ein Postback ist ein nachfolgendes HTTP-POST auf derselben Seite, auf der sich das Formular befindet.
Wenn sich auf einer Seite ein Formular befindet und der Browser nicht über meine Schaltfläche "Senden" auf eine andere Seite umgeleitet wird, auf der das Formular verarbeitet wird, aktualisieren Sie stattdessen die aktuelle Seite mit der Schaltfläche "Senden" (und führen Sie einige bestimmte Schritte aus, um das Formular zu überprüfen / zu speichern Seite, vermutlich), dann soll diese Schaltfläche " Senden" wieder auf die aktuelle Seite gepostet haben .
Postbacks können entweder vollständig (die gesamte Seite aktualisieren) oder teilweise (in einem Fall, in dem AJAX verwendet wird) sein. Bei einem teilweisen Seiten-Postback wird nur ein Teil der Seite neu gerendert (z. B. eine einzelne Dropdown-Liste, eine Tabelle usw.).
quelle
Im alten HTML besteht die einzige Möglichkeit, etwas auf der Webseite zu aktualisieren, darin, eine neue Webseite erneut an den Client-Browser zu senden. Das war es, was ASP früher getan hat. Sie müssen dies tun, indem Sie ein "PostBack" aufrufen, um eine aktualisierte Seite an den Client zu senden.
In ASP .NET müssen Sie nicht die gesamte Webseite erneut senden. Sie können jetzt AJAX oder andere ASP.NET-Steuerelemente verwenden, sodass Sie nicht die gesamte Webseite erneut senden müssen.
Wenn Sie eine alte Website besuchen, werden Sie feststellen, dass die gesamte Seite aktualisiert werden muss, sobald Sie auf etwas klicken. Dies ist der alte ASP. In den meisten modernen Websites werden Sie feststellen, dass Ihr Browser nicht die gesamte Seite aktualisieren muss, sondern nur den Teil des Inhalts, der aktualisiert werden muss. In Stackoverflow wird beispielsweise angezeigt, dass die Seite nur den Inhalt und nicht die gesamte Webseite aktualisiert.
quelle
Setzen Sie dies einfach durch einen kleinen Code. Hoffe es ist hilfreich für dich. Wenn Sie zuerst die Seiten-URL anfordern. Sie können den Quellcode in den meisten Browsern anzeigen. Unten finden Sie ein Beispiel dafür.
Das Wesentliche bei Post Back ist
__doPostBack
, dass Sie alle Formulardaten, die Sie von Ihrer ersten Anfrage erhalten haben, an den Server zurücksenden. (__EVENTTARGET
enthält die ID des Steuerelements.)quelle
Postback ist eine Anforderung, bei der ASP Werte der Eigenschaften von Steuerelementen aus dem Ansichtsstatus wiederherstellt.
quelle
IsPostBack
ist eine Eigenschaft derAsp.Net
Seite, die angibt, ob die Seite vorhanden ist oder nichton its initial load
und ob ein Benutzer eine Schaltfläche auf Ihrer Webseite ausgeführt hat, die dazu geführt hat, dass die Seite wieder auf sich selbst gepostet wurde.mehr zu ... Asp.Net ispostback ()
quelle