2012-04-15 14 views
0

Ich habe eine asp.net-Website, die eine Masterseite und mehrere normale Seiten hat. Auf der Masterseite gibt es eine Menüleiste, über die der Benutzer die normale Seite auswählen kann. Ich habe Code im Page_Load-Ereignis einer der normalen Seiten. Das Problem ist, dass dieses Ereignis nur einmal ausgelöst wird - wenn der Benutzer das erste Mal zur Seite navigiert. Wenn der Benutzer zu einer anderen Seite und dann wieder zurück navigiert, wird das Ereignis nicht ausgelöst. Kann mir jemand sagen, was ich falsch mache?Page_Load Ereignis wird nur einmal ausgelöst

+0

Wird die Seite im Browser zwischengespeichert? Wenn dies der Fall ist, wird es nicht erneut vom Server geladen und Ihr 'page_load' wird nicht ausgelöst. – Oded

+0

Abhängig von Ihren IIS-Einstellungen besteht eine gute Chance, dass die Seite vom Browser zwischengespeichert wird und der Roundtrip nicht zum Server zurückkehrt. (Besonders zutreffend, wenn Sie mit der Zurück-Taste zur vorherigen Seite navigieren). Was passiert, wenn Sie am Ende der URL eine eindeutige QueryString-Variable hinzufügen? 'somepage.aspx -> somepage.aspx? 2' – leepowers

Antwort

0

Es scheint, dass Problem durch die Browser-Caching verursacht wurde die Seite, danke, dass du mich in die richtige Richtung weist.

Das Problem erscheint nicht nur bei der Verwendung der Zurück-Taste, so dass ich befürchte, dass dies nicht das Problem löst.

Meine Lösung war es, die einfachen HTML-Hyperlinks, die ich für das Menü mit Server-Seite asp.net Button-Steuerelemente verwendet. Wenn der Code dahinter eine response.redred ausführt, scheint das page_load-Ereignis der Zielseite jedes Mal ausgeführt zu werden.

+0

Eigentlich habe ich einen besseren Weg gefunden. Wenn Sie Folgendes zum Ereignis page_load hinzufügen, wird verhindert, dass die Seite zwischengespeichert wird: Response.Cache.SetCacheability (HttpCacheability.NoCache); –

1

Wenn Benutzer Benutzer Back Schaltfläche des Browser-Browsers wird zwischengespeicherte Version Ihrer Seiten verwenden, wenn Ihre Seiten normal sind und keine spezifischen Einstellungen auf sie angewendet. diese Codes verursachen, wenn Benutzer Verwendung Back Taste nichts zeigen ihm/ihr:

Response.Cache.SetExpires(DateTime.Now.AddDays(-1)) ; 
Response.Cache.SetValidUntilExpires(false) ; 
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches) ; 
Response.Cache.SetCacheability(HttpCacheability.NoCache) ; 
Response.Cache.SetNoStore(); 

Oder prvent Benutzer diesen Code zurück verwenden:

<body onLoad="if(history.length>0)history.go(+1)"> 
Verwandte Themen