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
Antwort
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.
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); –
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)">
- 1. jQuery .change() Ereignis wird nur einmal ausgelöst
- 2. jQuery keyup -Ereignis wird nur einmal ausgelöst
- 3. ISupportIncrementalLoading wird nur einmal ausgelöst
- 4. LoadControl und Page_Load Ereignis nicht ausgelöst
- 5. Schleife nur einmal ausgelöst
- 6. Ein Ereignis nur einmal auslösen?
- 7. FileSystemWatcher - nur einmal das Änderungsereignis einmal ausgelöst?
- 8. WebBrowser DocumentCompleted Ereignis ausgelöst mehr als einmal
- 9. Benutzerdefiniertes Ereignis wird mehrfach ausgelöst, wenn emit nur einmal aufgerufen wird
- 10. Handle-Ereignis vor Page_Load
- 11. ASP.NET-Benutzersteuerelement: Page_Load wird ausgelöst, bevor die Eigenschaft festgelegt wird
- 12. pageshow Ereignis auf iphone Brände nur einmal
- 13. Wenn ein jQuery.click() -Ereignis nur einmal innerhalb eines anderen .click() - Ereignisses ausgelöst wird
- 14. ASP.NET: Überprüfen auf Click-Ereignis in page_load
- 15. FusedLocationApi mit PendingIntent wird nur einmal ausgelöst und seine null
- 16. Wie knockout beobachtbares Abonnement erstellen, das nur einmal ausgelöst wird?
- 17. Wie lokale Benachrichtigungen nur einmal ausgelöst werden?
- 18. PreRender-Ereignis wird nicht ausgelöst
- 19. "Backbutton" Ereignis wird nicht ausgelöst
- 20. Welches Ereignis hat zuerst angerufen? Masterseite Page_Load oder Inhaltsseite Page_Load
- 21. AjaxFileUpload wird nicht ausgelöst OnUploadComplete Ereignis
- 22. Dispatcher in Ereignis wird nur einmal aufrufen C#
- 23. Dynamisch hinzugefügtes Listenfeld-Ereignis wird nicht ausgelöst
- 24. Verhindern, dass Klickereignis ausgelöst wird, wenn dblclick-Ereignis ausgelöst wird
- 25. Google Nest subscriptionWithMessageFoundHandler wird einmal ausgelöst?
- 26. Wie onclick Ereignis nur einmal zu arbeiten
- 27. AngularJS - Fire $ Timeout-Ereignis bei ng-Änderung nur einmal
- 28. AS3 - Ereignis-Listener, der nur einmal auslöst
- 29. Button-Click-Ereignis funktioniert nur einmal asp.net
- 30. JQuery Click-Ereignis funktioniert nur einmal
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
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