- - PR -
WEBページ間での値渡し
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-02-04 13:27
Page.Cacheって、同一ページ内での再利用じゃないのですか?
詳しく調べていないのですが、自分は、そうだとばかり思っていました。。。 試しに、ページ間でキャッシュの追加・取得を行ってみましたが、出来ませんでした。 test1.aspx--------------- Cache["TEST"] = "test"; test2.aspx--------------- string testStr = (string)Cache["TEST"]; 結果、testStr = null でした。。。 | ||||||||
|
投稿日時: 2003-02-04 13:56
私は、
test1.aspx----------------------------- this.Cache["a"]="aaa"; this.Response.Redirect("test2.aspx"); で、test2.aspxのPage_Load()で test2.aspx----------------------------- Label1.Text=(string)this.Cache["a"]; とやってみたんですが、Label1には"aaa"が表示されました。 Session変数のようにずっと保存されるのではなく、HTTPでのやりとり1回の間のみ有効なのでしょうかね。 Response.Redirect()では、クライアントはサーバーに再接続し新しい要求をしているわけではありませんから。 | ||||||||
|
投稿日時: 2003-02-04 14:06
はっは〜、なるほど。。。 Response.Redirect()が重要なわけですね。。。 自分が試したのは、Page_Load時にキャッシュし、リンクボタンでページ移動、移動先でキャッシュ取得ってな感じで行ってました。 これは使えます。アイテムが使用後に自動的に削除されるって言うのがいいですね!! あすとら様のスレッドにて便乗質問してしまったようで申し訳ありませんでしたが、勉強になりました。。。 | ||||||||
|
投稿日時: 2003-02-04 14:59
あれ……potatoさんの仰るように、「Page_Load()でキャッシュに値をセットし、リンクボタンでページ移動、移動先のPage_Load()でキャッシュから値を取得」とやってみたのですが、値を取ることができました。
何でしょう?potatoさんの値は重要でないアイテムがキャッシュから自動的に削除されたんでしょうかね。 いずれにしても、キャッシュというだけあって「また同じ計算をしなければならない所をキャッシュで済ませられればラッキー」という使い方が正しく、ページ間でのやりとりのためのものではないようですね。 | ||||||||
|
投稿日時: 2003-02-04 17:14
今、再度試してみたら出来ました。。。さっきのソースは残ってないので何ともいえませんが、ただの記述間違いですかね。。。
そうですね。自分はデータセットを保持しておくのに利用しています。 また、『重要でないアイテムがキャッシュから自動的に削除』っていうのも、あいまい。結局自分で削除するのでしょう。。。 | ||||||||
|
投稿日時: 2003-02-05 09:29
Cacheはアプリケーション全体に渡って有効だと思います。
アプリケーション変数との違いは、有効期限をつけたり、もとになった データに変更があった時点で内容を変更したり、といった設定が できる点ではないでしょうか。 『重要でないアイテムがキャッシュから自動的に削除』というのは 有効期限等を適切に設定していれば、必要のないデータは削除される ようになるという意味ではないでしょうか。 勝手に消えちゃったら困りますよねぇ。 |