- - PR -
【ASP.NET】ページ遷移時にPage_Loadイベントが発生しない。
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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で遷移を発生させたいと考えています。 |
|
投稿日時: 2003-05-26 17:45
こんにちは。
> b.aspx > ↓ > c.aspx bからcへの遷移はどのようにされてます? |
|
投稿日時: 2003-05-26 17:57
レスありがとうございます。
Context.Server.Transfer("c.aspx"); で遷移しております。 |
|
投稿日時: 2003-05-27 10:50
こんにちは。
試してみたところ、キャッシュを効かせる(aspxに @ OutputCache を記述しました)と 同様の動きが確認できました。 aspxに @ OutputCache を記述しているってことは、ないですか。 ちなみに、キャッシュを効かせても、Server.Transferはサーバ側の処理となるので Page_Load が呼び出されるのではないかと思います。 |
|
投稿日時: 2003-05-27 22:42
返事が遅くなりましてすみません、レスありがとうございます。
OutputCacheディレクティブは記述しておりません。 Server.Transferの場合は、キャッシュは効かないのですね。 確かにPage_Loadは動きました。 キャッシュを効かせない方法をいろいろ試しているのですが、なかなかうまくいかず。。。。 ちょっと今週はそれをしている時間がないので、また時間を置いてチャレンジします。 #勿論、アドバイスを頂ければ、やってみます! |
|
投稿日時: 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はうまく動きません。 多少なりとも参考になればよいのですが・・・。 お邪魔しました。 |
|
投稿日時: 2003-05-28 13:57
こんにちは。
あと、気になったこととして、 使われているネットワーク環境にプロキシサーバがいて、そこでキャッシングされてるって ことはないですか? キャッシュを効かせない方法としては、なごやんさんが書かれている通りですね。 ここも参考になるかと。 |
|
投稿日時: 2003-05-29 15:13
プロキシサーバは入っておりません。
今の所、ローカル環境でやってまして。 教えて頂いたページの情報でやってみます。 <% Response.CacheControl = "no-cache" %> あたりはやっていたのですが、それ以上はまだ試していません。 |