![]() |
||
連載プログラミングASP.NET
|
||
別ページへの遷移
ASP.NETでは、同一ページへのポストバックしかサポートされていない。おかげで、ページからページへデータを受け渡すには、フォーム以外の方法を取らざるをえない。例えば、Sessionプロパティに値を格納してからページを移動する、クエリ文字列に値を指定する(詳しくは後述)などだ。しかし、どちらも大量データの受け渡しには向かず、効率が悪い。より効率的にデータを渡すには、Transferメソッドを使って、擬似的に別ページへとポストバックする手法が有効だ。
■Transferメソッド
いま述べたように、ASP.NETでは同一ページにしかポストバックできない。これは揺るぎない制約だが、いったんポストバックされた後に、サーバ・サイドで別ページへと処理を移すことで、擬似的に別ページへのポストバックが実現できる。この処理に使うメソッドが、HttpServerUtility.Transferメソッドである。例えば、以下のように利用すれば、そこでそのページの処理を打ち切り、別ページであるsampleB.aspxへと処理を移すことができる。
Server.Transfer("sampleB.aspx");
Transferメソッドとよく似たメソッドに、HttpResponse.Redirectメソッドがある。このメソッドも指定したページへと処理を移すという点ではTransferメソッドと同じだが、その実現方法は大きく違う。その違いが、擬似的な別ページへのポストバックを実現する方法の解説にもつながるので、まずRedirectメソッドについて解説しておこう。
Redirectメソッドは、このメソッドが以下のように呼び出されると、クライアントへリスト16.1に示すシンプルなレスポンスが送信される。ここには、ASP.NETページのbodyタグに記述したWebページは含まれていない。
Response.Redirect("sampleB.aspx");
|
|
| リスト16.1 Redirectメソッドによるレスポンス(一部抜粋) |
そして、このレスポンスを受け取ったクライアントは、Locationヘッダに指示されたURLへとアクセスする。このアクセスはポストバックではなく、通常のWebページへのアクセスと同じように行われるため、サーバへは何も情報は送信されない。
このように、Redirectメソッドが呼び出されると、ユーザーからはポストバックが1度だけ行われたように見えるが、実際には2度のラウンド・トリップが行われ、その間に最初にポストした情報は失われてしまう。従って、Redirectメソッドを使っても、別ページへのポストバックを実現することはできない。
![]() |
| 図16.1 Redirectメソッドの動作 |
| ユーザーからはポストバックが1度だけ行われたように見えるが、実際には2度のラウンド・トリップが行われている。 |
それでは、Transferメソッドを呼び出したときはどうなるのか。Transferメソッドの場合は、それを呼び出しただけではレスポンスが生成されることはなく、そのままサーバ上で指定されたページへと処理が移行される。つまり、ラウンド・トリップは1度だけなのに、2つのASP.NETページが連続して処理されることになる。このため、最初にポストバックされているsampleA.aspxが実行されていたときに生成されたオブジェクトは、まだメモリ上に残されていて、移行先のsampleB.aspxからアクセスできる。
![]() |
| 図16.2 Transferメソッドの動作 |
| 2つのASP.NETページが連続して処理されるため、ラウンド・トリップは1度だけとなる。 |
この仕組みを利用すれば、sampleA.aspxへとポストしていながら、その結果をsampleB.aspxから戻すことができるというわけだ。
| INDEX | ||
| プログラミングASP.NET | ||
| 第16回 ASP.NETにおけるページの遷移 | ||
| 1.別ページへの遷移 | ||
| 2.遷移元ページのアクセス | ||
| 3.フレームとの組み合わせ | ||
| 4. クエリ文字列の利用 | ||
| 「連載 :プログラミングASP.NET」 |
ホワイトペーパー(TechTargetジャパン)
- LocalConnection APIと動的なスタイリング (2010/2/9)
Webページ上の複数のSilverlightアプリ間でメッセージ通信をする方法とは? コントロールの見た目を動的に設定する方法とは? - ASP.NET MVC 2:モデルの検証 (2010/2/8)
ASP.NET MVC 2で導入される入力検証機能を使った実装を紹介。シンプルな属性の追加によるエレガントな実装が可能となっている - ASP.NETによる3階層Webアプリ「ITブック」構築 (2010/2/5)
ちょっとした改造で、あなたのWebアプリは劇的に使いやすく、かっこよくなる。まずは元となるWebアプリを標準的手法で構築 - .NET TIPS - .NET開発のテクニックとヒント集 - (2010/2/4)
− カスタムMVCビューエンジンを利用するには?(活用編)
− フォーム全体へのドッキングでつまみを表示するには?
− リストボックスでTextBlockの文字列を折り返すには?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |









