QA@IT

RedirectResultオブジェクト

4006 PV

@ITの記事「第3回 ActionResultオブジェクトでアクション操作も自由自在 (1/5)」についての質問です。

外部サイトへのリダイレクトとして、MVCではRedirectResultオブジェクトを使うという事ですが、Response.Redirectではなく、RedirectResultオブジェクトを使う理由はありますか?

  • 質問の背景をお聞きしたいです。逆に、MVC で RedirectResult を使わないで Response.Redirect を使わなければならない理由があるのでしょうか? -
  • ご返信ありがとうございます。
    Response.RedirectはASP.NETでは画面遷移時に使っていました。
    なので、何故RedirectResultを使うのかなとという疑問です。
    -

回答

必要性うんぬんの話ではなくて、単なる興味の問題と理解して回答します。

Web Forms アプリも MVC アプリも ASP.NET ランタイム上で動きますから、HttpRequest, HttpResponse, HttpSessionState, Cache などの ASP.NET ランタイムの組み込みコンポーネントに完全にアクセスできます。

アクセスする方法は Web Forms でも MVC でも同じです。

ではなぜ MVC では Web Forms と同様な方法でアクセスしないかと言えば、ASP.NET ランタイムの組み込みコンポーネントへの依存性を緩和しテスタビリティを向上させるためです。(自分が知る限りです。他にも理由はあるかもしれません)

Web Form のように Response プロパティを使って HttpResponse オブジェクトを取得したのでは、単体テストの際に HttpResponse のモックを作るという作業が必要になってくるはずです。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。