C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

redirectで遷移時にPageLoadが発生しない

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■102664 / inTopicNo.1)  redirectで遷移時にPageLoadが発生しない
  
□投稿者/ スペックル (1回)-(2023/12/01(Fri) 22:04:46)

分類:[ASP.NET (C#)] 

初めて投稿します。よろしくお願いします。

ASP.NET C#のWebFormを使用して開発を行っております。
その中で、ブラウザバックを絡めた遷移を行った際に、
PageLoadが発生しない事象で困っております。
以下が発生している事象や、試したことになります。

■事象
@画面Aから画面Bへブラウザバックを使用して遷移
A画面BのPageLoadイベントで画面CへResponse.Redirectを使用して遷移(画面Cへ遷移時に「Global.asax」の「Application_PreRequestHandlerExecute」が実行されていないことは確認済み)
B画面CのPageLoadイベントが実行されず、キャッシュ(?)からページを表示される


■試したこと
・「Response.Redirect」の第2引数をtrue、falseどちらも実施したが、影響なし。
・「Response.Cache.SetCacheability(HttpCacheability.NoCache);」を画面CのPageLoadに実装したが変わらない。
・「Response.Redirect」を「Server.Transfer」に変更し、実行。
 →PageLoadは実行されるようになるが、URLは画面Bのままとなり、仕様上の不都合がある。

■実現したいこと
「Response.Redirect」で事象B時にPageLoadを実行できるようにしたい。

■環境
Windows 10 Pro
Visual Studio Professional 2017 Version15.9.4
Microsoft .NET Framework Version 4.8.09037(プロジェクトのターゲットフレームワークは4.7.2)

対応をご教授頂けると幸いです。
引用返信 編集キー/
■102665 / inTopicNo.2)  Re[1]: redirectで遷移時にPageLoadが発生しない
□投稿者/ WebSurfer (2830回)-(2023/12/01(Fri) 22:45:38)
No102664 (スペックル さん) に返信

> @画面Aから画面Bへブラウザバックを使用して遷移

「ブラウザバック」って何ですか?

ごく簡単なサンプルで良いので、コピペすれば問題を再現できる画面 A 〜 C のコーを作成
してアップし、再現手順を書くことはできますか?

そうしてもらえると話が早いと思います。
引用返信 編集キー/
■102666 / inTopicNo.3)  Re[1]: redirectで遷移時にPageLoadが発生しない
□投稿者/ WebSurfer (2831回)-(2023/12/01(Fri) 23:18:27)
No102664 (スペックル さん) に返信

「ブラウザバック」というのは、画面B ⇒ 場面A と遷移した後、ブラウザの左上に
表示されている戻るボタンをクリックして画面B を再表示するということですか?

そういうことであれば、

> @画面Aから画面Bへブラウザバックを使用して遷移

は、ブラウザのキャッシュから取得して画面 B を表示するので、

> A画面BのPageLoadイベントで画面CへResponse.Redirectを使用して遷移

はできません。サーバー側では何も動かないので、当然 Page.Load イベントは発生せず、
そこでれダイレクトとするというようなことはできません。

そうことであれば、上にお願いしたサンプルコードは結構です。
引用返信 編集キー/
■102839 / inTopicNo.4)  Re[2]: redirectで遷移時にPageLoadが発生しない
□投稿者/ スペックル (2回)-(2024/01/15(Mon) 14:17:48)
事象が再現するサンプルコードは作成できませんでしたが、
キャッシュの問題だと言うことがわかりました。

そのため、該当画面のページロードイベント時に
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
を設定することで、
実現したいことができました。

ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ