2009-06-02 6 views
3

Wenn ich jQuery zu POST-Daten zurück zum Server verwende, bekomme ich seltsames Verhalten.jQuery POST nicht ändern IsPostback-Variable

Wenn ich __VIEWSTATE und __EVENTVALIDATION in meine serialisierten Formulardaten einschließe, wird die Seitenvariable IsPostback auf True gesetzt. Wenn ich diese beiden ausschließe, wird IsPostback auf false gesetzt.

Es ist einfach genug für mich, diese beiden Variablen einzubeziehen, aber weiß jemand, was hinter den Kulissen passiert?

+1

Sie sollten einen Beispielcode von dem, was Sie tun und/oder zu erreichen versuchen, veröffentlichen. –

Antwort

4

Einer der Punkte der Viewstate und eventvalidation Track sind, ob ein Postback aufgetreten ist oder nicht. In Anbetracht des ereignisbasierten ASP.NET-Seitenlebenszyklus gibt es keine andere Möglichkeit, nachzuverfolgen, ob ein Postback aufgetreten ist, als einfach den Wert irgendwo zu speichern.

Mit anderen Worten, Sie könnten manuell nach Postback suchen, indem Sie in das Viewstate-Objekt graben und den Postback-Booleschen Wert suchen und ihn in true ändern. Dies ist vielleicht nicht genau so, wie es beschrieben wurde, aber es hebt hervor, was im Viewstate etwas besser läuft.

2

IsPostBack() ist ein wenig durcheinander, aber ja, es ist für __VIEWSTATE und __EVENTVALIDATION und nicht viel mehr. Was es sicherlich nicht tut, ist zu überprüfen, ob das HTTP-Verb ein POST oder ein GET ist, was die meisten Leute annehmen (Sie können dies sehen, wenn Sie eine einfache Seite einrichten und die Felder viewstate und eventvalidation (falls vorhanden) in die Abfrage einfügen) string check IsPostBack()

Aber warum sollten Sie das überprüfen? Wirklich das kommt nur ins Spiel, wenn eine vollständige Formularübermittlung gesendet wird, wenn Sie teilweise posten, neigen Sie dazu, es zu einem Webdienst zu tun, wo IsPostBack ist unwichtig

0

Wenn Sie mit jquery ein "postback" ausgeben möchten, sollten Sie __VIEWSTATE und __EVENTVALIDATION einschließen. Dies sind zwei wichtige Datenblöcke, die ASP.NET WebForms benötigt, um ein vollständiges Postback ordnungsgemäß zu propagieren Sie möchten nur einen Serviceanruf tätigen, dann sollten Sie keines von beiden benötigen Sie verlieren jedoch die Möglichkeit, auf einer Seite mit allen Vorteilen der WebForms-Ereignispipeline zu posten.