Почему Page_Load не стреляет после возвращения из другой страницы с помощью ASP.NET - следовательно эпическое затруднение :)

Скажем, у меня есть две страницы на том же ASP.NET C# WebSite.

  • Page1.aspx делает вещи в событии Page_Load
  • Я перешел к Page2.aspx с помощью меню
  • Page2.aspx делает некоторые вещи затем Ответ. Перенаправьте назад к Page1.aspx
  • Page1.aspx не может сделать вещей в событии Page_Load на этот раз, потому что это никогда не стреляет.

Я пытался выключить кэш декларативно, попробованный не использовать верный для endResponse в моем перенаправлении... ничто, кажется, не имеет значения.

Не берите в голову всех! Я - идиот! Используя Visual Studio Dev Localhost Перенаправление перенаправляло к живой странице!:)

8
задан SLaks 17 February 2010 в 15:47
поделиться

4 ответа

Причина выполнения страницы не влияет на цикл страницы, событие загрузки всегда срабатывает при выполнении страницы.

Итак, если Page_Load иногда не запускается, это потому, что страница кэшируется и не выполняется на сервере. Страницу можно кэшировать в браузере, где-нибудь в маршрутизаторе или на сервере, используя кеширование страницы на стороне сервера.

Если вы не включили кеширование страницы на стороне сервера для страницы, она кэшируется в браузере или в сети. Вы можете использовать настройки кеширования, чтобы попытаться устранить это:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Это предотвратит кэширование страницы в нормальных условиях. (Убедитесь также, что ваш браузер не находится в автономном режиме, тогда он будет использовать все, что есть в кеше, независимо от его настроек кэширования.)

14
ответ дан 5 December 2019 в 07:34
поделиться

Попробуйте использовать Server.Transfer вместо Response.Redirect.

Клиент не увидит изменение URL-адреса, но это может не иметь значения, в зависимости от ваших требований

1
ответ дан 5 December 2019 в 07:34
поделиться

Когда вы переходите на страницу с помощью кнопки «Назад», страница перезагружается из памяти, и запросы на сервер не отправляются.

Вы можете подтвердить это с помощью Fiddler .

Я не уверен, что это верно для всех браузеров.

5
ответ дан 5 December 2019 в 07:34
поделиться

Если вы перенаправляете, возможно, клиент кэширует ответ. Чтобы обойти это, вы можете добавить дополнительный параметр запроса, который просто будет содержать время.

Обычно этого достаточно, чтобы обойти большинство механизмов кэширования страниц.

2
ответ дан 5 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: