Ich habe Seite A und Seite B. Sie können die folgenden Dinge auf Seite A tun:
Response.Redirect
. Nun ist das Problem wie folgt:
Was passiert: Seite A im Ausgangszustand wird angezeigt.
Was ich gerne tun würde: Die Seite A in ihrem Endzustand wird angezeigt (d. H. Mit dem "richtigen" Eintrag im Listenfeld ausgewählt).
Ich weiß über ScriptManager.AddHistoryPoint ! Soweit ich sehen kann, löst es mein Problem nicht:
Ich könnte AddHistoryPoint
jedes Mal aufrufen, wenn etwas auf Seite A getan wird. Das ist schlecht, weil es den Browserverlauf mit vielen Einträgen überlagert. (Ein neuer Eintrag jedes Mal ein anderes Listenfeld Element ausgewählt ist.) Aber das ist genau das, was ich vermeiden möchte, indem Sie ein UpdatePanel verwenden! Natürlich, wenn es eine ReplaceLastHistoryPoint
-Methode gäbe, wäre das perfekt, aber ich habe keine gefunden ...
Ich habe versucht, AddHistoryPoint
direkt vor Response.Redirect
aufzurufen, um nur den letzten Status von Seite A zu speichern, aber leider funktioniert das nicht (kein history-Punkt ist Gerettet). Dies ist nicht überraschend, wenn man bedenkt, wie Response.Redirect
funktioniert.
Gibt es eine Lösung, die ich verpasst habe? Ich verwende .NET 3.5SP1, falls es darauf ankommt.
Anstatt AddHistoryPoint auf dem Server aufzurufen, können Sie addHistoryPoint auf dem Client mit der Sys.Application-Klasse aufrufen, Ссылка .
Sie würden also einen clientseitigen Klick-Listener zu der Schaltfläche hinzufügen, die HISTORYPOINT auf dem Client hinzufügt, bevor die Schaltfläche den Post zurückgibt und umleitet.
Dies ist ein bisschen eine alte Frage, aber ich werde weitermachen und den Mechanismus bereitstellen, den ich dafür verwende. Die Grundidee ist, dass Sie AddHistoryPoint nicht erlauben, Ihre Name-Wert-Paare zu verwalten, sondern einfach einen Schlüssel für Ihre NameValueCollection verwalten, den Sie woanders aufbewahren, wie in Ihrem Session-Cache. Wenn dann nachfolgende Ajax-Anforderungen eingehen, führen Sie nie einen weiteren Aufruf von AddHistoryPoint aus. Stattdessen ersetzen Sie einfach Ihre NameValueCollection durch den Status der aktuellen Anfrage.
Das einzige andere Bit besteht darin, zu verfolgen, ob Sie an Ihrem ersten Ajax-Anruf teilnehmen und den ersten Aufruf von AddHistoryPoint durchführen müssen oder nicht.
Mein Code sieht ungefähr so aus:
%Vor%Tags und Links .net c# asp.net asp.net-ajax updatepanel