ASP.NET画面遷移の仕組み
ASP.NETではポストバックと呼ばれる仕組みが導入されています。
ユーザーがある画面でボタンを押下した際のシナリオをもとに、
ASP.NETの内部でどのような処理を行っているのかを簡単にまとめました。
1. ユーザーが画面を表示するために、.aspxにアクセスする。
2. ASP.NETランタイムは表示内容をViewStateに格納し、HTMLを出力する。
<input type="hidden" name="VIEWSTATE" value="(エンコードされた表示内容)">
3. ユーザーがデータを入力し、ボタンを押す。
ポストバックにより、自動的に上記1と同一の.aspxを呼び出される。
この際、変更前のデータ(ViewState)と変更後のデータがサーバーに送信される。
4. ASP.NETランタイムは変更前のデータ(ViewState)と
変更後のデータを比較し、適切なイベントハンドラを呼び出す。
イベントハンドラは
Change系イベントハンドラ(テキストの内容変更、チェックボックス変更など)
→Action系イベントハンドラ(ボタン押下など)の順に呼び出される。
5. ASP.NETランタイムは、処理完了後、HTMLを生成しクライアントに返す。
※.aspxは上記1の初回リクエスト時と、
表示された画面でアクションを起こした場合の2回呼び出されることになる。
Page_Load()メソッドはそのたびに呼び出されることに注意する。
(IsPostBackプロパティで初回リクエストとポストバックを区別することができる。)
※別のASPに遷移したい場合には、Actionイベントの最後に
Response.Redirect("after.aspx")を記述する。
そうすると、システムはHTMLを返すのではなく、
after.aspxへのアクセスをするようクライアントに指示することで画面遷移が行われる。
以降は上記1と同様である。
※ASP.NETではフォームへの入力データは同一ページにしか送信できない!!JSPに慣れていると、これを忘れて設計してしまうので、要注意ですね。