先週末に読んだ基礎からのASP.NET SE必修! (SE必修!プログラマの種シリーズ)
の整理をしていなかったので、書き残しておきます。
先週読んだ所は、Webページでの値の保持方法と、複数ページでの遷移する時の
値の受け渡しについてでした。
ASP.NET2では、
・Cookie
・StateBag
・Session
の3つを利用して値を保持したり、ページ間で値の受け渡しをしたりするようです。
Cookieは、クライアントのメモリorディスクに保存させることで、値を保持する方法です。
(有効期限を指定(Expiresプロパティに値をセット)するとディスクに書き込む)
Cookieを利用するとブラウザ終了後に破棄されます。(メモリ保存のみの場合など)
利用者がCookieを拒否する事も可能
そもそもCookieが利用できないブラウザが存在したりする。
最大4kバイトの情報を保持できるらしい。
一時的なセット
Response.Cookies("key1").Item("key2") = "hoge"
復元可能なセット
Response.Cookies("key1").Item("key2") = "hoge"
Response.Cookies("key1").Expire = "未来の日付"
値の取り出し
Request.Cookies("key1").Item("key2")
StateBagは、ViewStateプロパティを利用してやり取りする。
(ViewStateはブラウザのhiddenに値を保持させている。
Base64エンコードしているので、メモ帳で見ても値は判別できない。)
値のセット
ViewState.Item("key1") = "hoge"
値の取り出し
ViewState.Item("key1")を型変換
Sessionは、サーバで保持する方法で、セッションIDで、クライアントを判別し、
アプリケーション内でデータを共有できる。
ただし、サーバのリソースを消費する。
値のセット
Session.Item("key1") = "hoge"
Session("key1") = "hoge"
値の取り出し
Session("key1")を型変換
注意点
ViewStateを利用した時は、更新ボタンを押した時と、Submitした時で挙動が違う。
Cookie、Sessionは更新ボタンでも、クライアント、サーバで保持している値を利用するので変化するが、
ViewStateについては、更新ボタンだと表示前のリクエストで実行されるため、値が変化しない。