- PR -

【ASP.NET】ページ遷移時にPage_Loadイベントが発生しない。

投稿者投稿内容
さり
常連さん
会議室デビュー日: 2003/05/13
投稿数: 38
投稿日時: 2003-05-26 16:18
a.aspx
↓ location.href = "b.aspx"
b.aspx

c.aspx
↓ location.href = "b.aspx"
b.aspx

上記のような形で、a→b→c→d とページを遷移する場合なのですが、
b.aspxファイルのPage_Loadイベントが一度目の遷移の時には動くのですが、
二回目のc.aspxからの時には動きません。原因はなぜなのでしょうか?

ブラウザのキャッシュが効いている?のかと思ったのですが、Server.Transfer
で遷移すると、きちんとPage_Loadイベントは動きます。
また、今回はJavaScriptで遷移を発生させたいと考えています。
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2003-05-26 17:45
こんにちは。

> b.aspx
> ↓
> c.aspx
bからcへの遷移はどのようにされてます?
さり
常連さん
会議室デビュー日: 2003/05/13
投稿数: 38
投稿日時: 2003-05-26 17:57
レスありがとうございます。

Context.Server.Transfer("c.aspx");
で遷移しております。
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2003-05-27 10:50
こんにちは。

試してみたところ、キャッシュを効かせる(aspxに @ OutputCache を記述しました)と
同様の動きが確認できました。
aspxに @ OutputCache を記述しているってことは、ないですか。

ちなみに、キャッシュを効かせても、Server.Transferはサーバ側の処理となるので
Page_Load が呼び出されるのではないかと思います。
さり
常連さん
会議室デビュー日: 2003/05/13
投稿数: 38
投稿日時: 2003-05-27 22:42
返事が遅くなりましてすみません、レスありがとうございます。

OutputCacheディレクティブは記述しておりません。
Server.Transferの場合は、キャッシュは効かないのですね。
確かにPage_Loadは動きました。

キャッシュを効かせない方法をいろいろ試しているのですが、なかなかうまくいかず。。。。
ちょっと今週はそれをしている時間がないので、また時間を置いてチャレンジします。

#勿論、アドバイスを頂ければ、やってみます!
なごやん
会議室デビュー日: 2003/03/03
投稿数: 10
投稿日時: 2003-05-28 11:20
こんにちわ。

b→cに遷移する時、一瞬ではないですか?
※読み込んだ雰囲気がない

この場合、
1)閲覧IEのバージョンを5.5SP2以降にする
  出切ればIE6.0SP1がいいかも(実証済み)
2)IEのオプションの、「インターネット一時ファイル」「履歴」
  を一旦削除する
3)各aspxの<html>ヘッダ部分に下記を追加する
  <meta http-equiv="Pragma" content="no-cache">
  <meta http-equiv="Cache-Control" content="no-cache">
  <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">
  ※1・2番目は必要。3番目はあるほうがいい感じ?
4)「@OutputCache」は記載しない

これではどうですか?

以前、同じaspxファイルをパラメータ渡しで繰り返し閲覧している時に
ほとほと困りました。
結論は、IEのバージョンとOutputCacheでした。
IEのバージョンが低いと、3の<meta・・・>が全く利きませんでした。
パラメータの渡し方をうまくしないと、OutputChacheはうまく動きません。

多少なりとも参考になればよいのですが・・・。

お邪魔しました。
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2003-05-28 13:57
こんにちは。

あと、気になったこととして、
使われているネットワーク環境にプロキシサーバがいて、そこでキャッシングされてるって
ことはないですか?

キャッシュを効かせない方法としては、なごやんさんが書かれている通りですね。
ここも参考になるかと。
さり
常連さん
会議室デビュー日: 2003/05/13
投稿数: 38
投稿日時: 2003-05-29 15:13
プロキシサーバは入っておりません。
今の所、ローカル環境でやってまして。

教えて頂いたページの情報でやってみます。
<% Response.CacheControl = "no-cache" %>
あたりはやっていたのですが、それ以上はまだ試していません。

スキルアップ/キャリアアップ(JOB@IT)