2015年11月9日月曜日

HttpResponse.Redirect メソッド (String)とは

こんにちは山田です。
エアコンと床暖のランニングコストはどっちがお得なんだろうと
最近気になっています。

季節ネタはさておき今回は、使用していたリダイレクトメソッドを
調べてみたのでその備忘録になります。

開発環境:ASP.NET 2.0

■HttpResponse.Redirect メソッド (String)とは

ASP.NETで画面遷移行う時Response.Redirect(string)を使います。
具体的には、クライアントに現在の処理を終了させて指定したURL(stringのこと)に遷移させることができます。

try-catch文を記すと常に例外が起こる仕様になっているようで
その時は第二引数にfalseを指定させて、Response.Endを呼ばせなくすることができるそうです。

調べたら似たようなメソッドで HttpServerUtility.Transferメソッドというものがありました。

■HttpServerUtility.Transferメソッドとの違い
このメソッドも指定したページへと処理を移すという点ではRedirectメソッドと同じなのですが、
動作の中身が大きく違うようです。

大きく違う点は
Redirectメソッドの場合は、ユーザーからの見た目上では、ポストバックが一度だけのように見えるが
 実はリクエストとレスポンスがそれぞれが2回ずつ起きているのです。
 一度目のレスポンスで、ポストした情報が消えてしまうので、ポストバックをさせたい場合はこの方法を使うことができません。
一方、Transferメソッドの場合は、ページが書き換わったあとページ遷移はサーバ内部で行われるため。
 遷移前にページで生成したオブジェクトが、メモリ上に残っているので遷移先のページからアクセスすることができます。

ページをまたいでポストバックできるってことですね。便利そうです。








Related Posts:

  • JavaScriptを使って外部ファイルを読み込む方法こんにちわ、開発者のⅠです。 さて、前回から時間が空いてしまいましたが、GoogleMapに関わるお話の続きです。 前回は、Google Mapにマーカーを表示させる方法について紹介いたしましたが、今度はその応用として、マーカーのデータを外部ファイルから読み込む方法について紹介したいと思います。… Read More
  • ページのリダイレクト方法 web.configページのリダイレクト方法 こんにちは山田です。 リダイレクトについてまとめました。(action type="Rewrite"でリライトも設定できます。) 開発環境:ASP.NET 使用言語:C# リダイレクトの書き方ですが いくつか方法があるようなのですが、 今回はWeb.configに記述… Read More
  • viewstateの中身を見ようと思ったがうまくできないブログネタ こんにちは山田です。 postとgetの違いについて以前お話したのですが postで送信されるviewstateについて掘り下げたいと思います。 ■ViewStateとは ビューステートは、ページとコントロールの値をラウンド トリップ間で保持する方法です。 現在のページの状態と値を… Read More
  • ASP.NETでのURLリライトの流れ こんにちは山田です。 長年の疑問のURLリライトについてわかってきたので その覚書です。  開発環境:ASP.NET2.0 開発言語:C# IIS:6.1 ■URLリライトの別名 URLリライト=URL書き換え 日本語だとURL書き換えとなります。 ■そもそもURLリライトは必… Read More
  • C# ref修飾子とout修飾子とはこんにちは山田です。 メソッドに引数を参照渡しで渡す方法です。 メソッドの戻り値で完結することが多いのですが、 それ以外に、戻り値とは別に引数を返したい場合があります。 自分が使うシーンとしては、メソッドの戻り値でDBから取得したデータリストを取得して、 そのデータの個数の値を別個に取得したい… Read More

1 件のコメント:

  1. ページをまたいだポストバックには「クロスポストバック」という方法を使用することもできます。
    http://www.atmarkit.co.jp/fdotnet/dotnettips/406asppostback1/asppostback1.html

    Server.Transfer()を使用する方法では、
    元のページ側でのイベントライフサイクルが進んでしまい、
    例えばPage_Load()でServer.Transfer()を呼ぶと
    元のページのPage_Init()等のイベントも発生します。Server.Transfer()するのであれば、
    この辺のライフサイクルイベントはほとんど無駄です。

    ですので、単にページをまたいだポストバックをさせたい場合は「クロスポストバック」の利用を検討して下さい。

    返信削除