2 Stimmen

WebForms mit ASP.NET AJAX: HyperLink vs LinkButton & Response.Redirect von GridView

Ich habe 2 asp.net Webformulare. Das erste hat einen ScriptManager, History, UpdatePanel und GridView; das zweite hat ScriptManager, UpdatePanel und TextBoxen. Die Prämisse hier ist eine Liste, die mit einem Detailformular verknüpft ist, in dem ein Element bearbeitet werden kann.

Wenn ich in der GridView (innerhalb des UpdatePanel) ein HyperLink-Steuerelement mit der URL der Bearbeitungsseite (mit den erforderlichen Parametern) verwende, etwas ändere, es speichere und dann auf die Schaltfläche "Zurück" klicke, sehe ich die ursprüngliche Liste ohne Aktualisierungen. Wenn ich F5 zum Aktualisieren drücke, werden die Änderungen angezeigt.

Wenn ich stattdessen einen LinkButton innerhalb der GridView verwende und diesen LinkButton in code-behind behandle, um eine Response.Redirect zur gleichen Bearbeitungsseite (mit den gleichen Parametern) durchzuführen, die gleichen Änderungen vornehme, speichere und dann auf die Schaltfläche "Zurück" klicke, wird die Liste auf der ursprünglichen Seite automatisch aktualisiert, um meine Änderungen anzuzeigen.

Beachten Sie, dass sich der Code auf der Detailseite, auf der die Bearbeitung/Speicherung stattfindet, nicht ändert - nur die Art und Weise, wie er zuerst angezeigt wird, wird geändert.

Meine Frage ist folgende: Was ist es über die Response.Redirect, die bewirkt, dass die Seite aktualisiert werden, wenn die Schaltfläche "Zurück" geklickt wird, und es möglich ist, dies für die direkte Hyperlink-Ansatz zu replizieren? Ich würde es vorziehen, die HyperLink-Methode zu verwenden, da ich keinen Grund für das Postback sehe, aber ich möchte, dass das GridView aktualisiert wird, wenn der Benutzer zurück zu ihm blättert.

Danke.

2voto

pseudocoder Punkte 4244

Ein LinkButton verursacht einen Postback, dessen Antwort ein HTTP 302 Redirect-Befehl ist, der auf der Serverseite durch Ihre Response.Redirect ausgelöst wird. Ihr Webbrowser speichert daher die alte Version der Seite nicht im Cache.

Das Hyperlink-Steuerelement rendert einfach eine reguläre <a> Tag, der Sie zur Detailseite auf der Client-Seite führt. Der Browser hat keinen Grund zu der Annahme, dass sich die Seite geändert haben könnte, und zeigt daher die im Cache gespeicherte Version an, wenn Sie auf die Schaltfläche "Zurück" klicken.

Wenn Sie dem Browser ausdrücklich sagen wollen, dass er die Seite nicht zwischenspeichern soll, wenn der Zurück-Button benutzt wird, verwenden Sie den HTTP-Header cache-control. W3C-Link ,

In jedem Fall sollten Sie auf der Detailseite einen Link (oder eine automatische Weiterleitung bei der Annahme von Änderungen) vorsehen, der den Benutzer zurück zur GridView/Zusammenfassungsseite führt, damit er nicht auf die Schaltfläche "Zurück" zurückgreifen muss.

Bearbeiten:

Sorry, die zuvor zur Verfügung gestellte Header-Beispiel war nicht für Asp.net, aber im Grunde wollen Sie etwas wie dieses zu tun:

Response.AppendHeader("Cache-Control", "no-cache")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X