« 基礎からのASP.NETを読む(5) | トップページ | 基礎からのASP.NETを読む(7) »

2010年8月10日 (火)

基礎からのASP.NETを読む(6)

がんばって読み進めている、基礎からのASP.NET SE必修! (SE必修!プログラマの種シリーズ)ですが、

今日は、前回の練習問題の解答から、画面遷移についての内容でした。

今回はちょっとハマってしまいましたが、何とか、@kiyokuraさんに説明を
頂きながら解決しました。

Page_LoadでCalendar.SelectedDateにCookieの値をセットするように
して、初期値を表示させ、PostBackUrlで指定したURLの画面で、
Page.PreviosPageで前画面のコントロールから値を取得しようと
していたのですが、PreviosPageでPage_Loadが実行されるため、
初期値が毎回セットされる現象に気がつくのに時間がかかってしまいました。

ちゃんと、IsPostBackプロパティをチェックして、PostBackの場合は
初期値セットをしないようにしないといけないということでした。

続いて、画面遷移の方ですが、
Server.TransferとResponse.Redirectの違いについての話題から始まりました。
(Javaで言う所のforwardとredirectの違いと言って伝わるかどうか)

Server.Transferではforwardですので、サーバ内部でのページ転送となります。
よって、前ページのコントロールの値が取得可能ですが、
Redirectの場合は一度、クライアントにレスポンスを返すので、前ページの値が
取得できないという違いがあります。
(見た目ではURLが変化する)

Web.configのappSettingsセクションにURLを記述しておき、
プログラムから参照しておけば、遷移先のページを切り替える事が
可能になります。
ただし、appSettingsには何でも登録できてしまうため、
何でも登録しておくとごちゃごちゃするということが発生します。

カスタムセクションの話題も書いてあるのですが、
Visual Web Developer 2005 Express Editionでは実現できませんでした。

そして、Session、Cookieによる状態管理について。
SessionはSessionIDで管理されていて、ブラウザごとに一意に割り当てられる。
サーバ上に保持されるため、ちょっと大きいデータも保持できるようです。
ただし、サーバの電源が落ちるとか、サーバプロセスが終了すると
Sessionの内容も消えてしまうため、情報によっては、Cookieに保存させて、
サーバの再起動で消失しないような設計をしないといけない。
それから、任意の時点でSessionもクリアするようにしないと、
サーバリソースを圧迫することにもなる。

ただし、Cookieも有効期限が来たり、ブラウザを終了させたり、ユーザがクリアしたり
すると、結局なくなってしまうので、消えてはいけない情報は別の場所に
保存するなどした方が良いようです。

次回は、アクセスログ管理から続いて読みます。

|

« 基礎からのASP.NETを読む(5) | トップページ | 基礎からのASP.NETを読む(7) »

ASP.NET」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/50625/49115151

この記事へのトラックバック一覧です: 基礎からのASP.NETを読む(6):

« 基礎からのASP.NETを読む(5) | トップページ | 基礎からのASP.NETを読む(7) »