Entwickler-Ecke

ASP.NET und Web - Rückmeldung beim Fenster schliessen


mats74 - Mo 20.01.20 23:33
Titel: Rückmeldung beim Fenster schliessen
Hallo zusammen

Ich habe zwei ASP.NET Seiten gestartet.


C#-Quelltext
1:
2:
Response.Redirect("Meine erste Seite.aspx");
Response.Redirect("Meine zweite Seite.aspx");


Die zweite Seite wird mit dem Kreuz auf der Registerkarte (nicht mit window.close() Event) geschlossen.

Wie erhalte ich nun die Rückmeldung im ASP.NET-Steuerelement in der ersten Seite, dass die zweite Seite geschlossen wurde?

Ich schaffe es nicht, einen entsprechenden Session-Wert durch eine Aktion aus der zweiten Seite zu generieren, damit ich in der ersten Seite per Timer eine nächste Aktion ausführen kann.
Der korrekte Session-Wert den ich generiere, erhalte ich erst nachdem die erste Seite wieder geladen ist.

Vielen Dank schon mal.


jfheins - Fr 24.01.20 18:36

Du möchtest also quasi im Browser zwischen verschiedenen Instanzen deiner Seite kommunizieren?

Dafür brauchst du interessanterweise den Server gar nicht: https://github.com/pubkey/broadcast-channel


mats74 - Mo 03.02.20 09:06

Hallo jfheins

Sorry für die späte Rückmeldung.
Deine Lösung finde ich gut, wenn zwischen 2 Seiten Daten ausgetauscht oder verglichen werden müssen (Client).

Meine Anforderung ist es, eine Rückmeldung der 2 Seite auf dem Server zu erhalten, da sich die Logik der beiden Seiten auf dem Server befindet.
Ich habe folgende Lösung erstellt:

- Beim Aufruf der 2 Seite wird ein Timer auf der 1 Seite gestartet
Der Timer überprüft einen Cookie-Wert, der von der 2 Seite erstellt wird
- Durch folgende Script-Funktion auf der 2 Seite


JavaScript-Quelltext
1:
2:
3:
window.onunload(){
document.cookie = 'mein_cookie='geschlossen'; expires='1000'; path=/';
}

wird das entsprechende Cookie erstellt
- Der Timer auf der 1 Seite prüft den Cookie-Wert mit den entsprechenden bestehenden Session-Werten aus der 1 Seite und führt die gewünschte Aktion aus.
- Die Timer-Intervalle sind untereinander entsprechend den durchzuführenden Aktionen abzugleichen.

Dies funktioniert bis jetzt einwandfrei und ist für meine Anforderung genügend.

Vielen Dank für Deine Bemühungen.