現場で覚えるASP.net開発日記

2009-11-09

画面遷移:Response.Redirect と Server.Transfer の違いは?

画面遷移時のコントロールにResponse.Redirect と Server.Transferの2種類を使用している。

この2つの違いは何のか?


以下のサイトを参照

10 行でズバリ !! Web アプリケーションの画面遷移

この最後に書いているが、

-------------------------------------------------

メニュー画面からの単純な分岐を行う画面遷移であれば、HyperLink などのリンクを使うのが簡単です。画面遷移前に、ポストデータの検証を行うのであれば、Response.Redirect が適当です。


しかし、これら 2 つは、遷移前の Page オブジェクトを参照できないので、遷移前の Page オブジェクトから複雑なデータを受け取るのであれば、Server.Transfer を使う方法が考えられます。ただし、ブラウザによっては、[戻る] ボタンを押してしまった場合、誤動作する可能性があります。ユーザーが本来はどの画面まで進んだか、画面遷移を追跡する仕組み (ワークフローの進捗を追跡する仕組み)が、サーバー側に必要になるでしょう。(もっとも、信頼性ある本格的なアプリケーションならば、どの画面遷移方法を問わず、サーバー側でどこまでワークフローが進んだか、追跡する仕組みは必要ですが。) もちろん、Server.Transfer でも、遷移前のアドレスにポストするので、遷移前に値の検証ができます。

さらに、ASP.NET 2.0 では、遷移先に直接ポストする仕組みが登場しました。この方法も、遷移前の Page オブジェクトを参照できます。1 つのページが複数の論理的なフォームに分割されていたとき、フォームごとにポスト先を変えたいときなどに便利です。それぞれの特色を踏まえた上で適切な使い分けをご検討ください。

--------------------------------------------------------------

→との事で、特に必要がなければ画面遷移がそのままURLと直結している Response.Redirect でいいのではないかと思う。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/zeeep01/20091109/1257764433
オススメ
Connection: close