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:

  • クライアントからリクエストされたURLを取得する方法 こんにちは山田です。 開発環境:ASP.NET2.0 開発言語:C# リライトをかけたページの改ページと並び替えをしようと思っていた時に、 仮想URLを取得したい場面がありました。 クラスライブラリを探したり、ネットを探したら 綺麗にまとめているページがあったので参考にさせていただ… Read More
  • CSVファイルとは?こんにちわ、開発者のⅠです。 今回は、前回の投稿で触れたCSVファイルについて説明したいと思います。 CSVは「Comma Separated Values」のそれぞれ頭文字です。 ”カンマ区切り文字”とでも言いましょうか。 「名前、経度、緯度」の各要素が書き込まれたCSVファイルを例にしてみ… Read More
  • GetTypeで型名を見る C#こんにちは山田です。 型名って忘れること多くないですか? そんな時にこれさえ覚えとけば安心の、型名の出力方法の覚書です。 開発環境:ASP.NET 2.0 開発言語:C# 必要となる構文はこちらです。  Object.GetType メソッド 例) ASPX側 <%#… Read More
  • JavaScriptを使って外部ファイルを読み込む方法こんにちわ、開発者のⅠです。 さて、前回から時間が空いてしまいましたが、GoogleMapに関わるお話の続きです。 前回は、Google Mapにマーカーを表示させる方法について紹介いたしましたが、今度はその応用として、マーカーのデータを外部ファイルから読み込む方法について紹介したいと思います。… Read More
  • XMLHttpRequestとは?こんばんわ、開発者のⅠです。 さて、今回は前々回の投稿についての補足として、APIのひとつであるXMLHttpRequestについて説明したいと思います。 以下のソースは、前々回の投稿での使用例です。 マーカーの情報が記録されたCSVファイルを読み込むための関数 getCSVFile に組み込ん… Read More

1 件のコメント:

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

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

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

    返信削除