C# PROGRAM

ASP.NET(C#) MVCモデル入門~フォワードとリダイレクト

フォワードとリダイレクト

コントローラーからビューを呼び出して、画面を遷移する方法には、フォワードリダイレクトの2種類あります。
フォワードは、内部的に処理する方法で、URLは変化しません
リダイレクトは、他のURLにアクセスをやり直す方法で、URLが変化します
ASP.NETのMVCモデルでは、フォワードは View()メソッド、リダイレクトは主に RedirectToAction()メソッドを使います。
View()メソッドや RedirectToAction()メソッドの詳しい内容は、以下のマイクロソフト公式サイトを参照してください。

View()メソッドの使い方

View()メソッドは、Viewsフォルダー配下にあるビューを呼び出し、画面を遷移させます。
View()メソッドを引数なしで呼び出すと、メソッド名に対応したビューが呼び出されます。
例えば、HomeController の Index()の場合は、Views/Homeフォルダー配下の Index.cshtml が呼び出されます。

また、View()メソッドは、呼び出したいビューを引数として渡すことができます。
例えば、View("Index2")とすると、Views/Homeフォルダー配下の Index2.cshtml を呼び出すことができます。
View()メソッドは、同じコントローラーのビューのみを指定することができます

ビュー名は、ダブルクォーテーション(")で囲む必要があります。

ViewDataを使ってビューに値を渡す

View()メソッドを使ってビューを呼び出した場合は、ViewData または ViewBag を使ってビューに値を渡すことができます。
なお、ViewData と ViewBag は同じ領域を使用しているため、例えば、ViewData["Value"] と ViewBag.Value は、同じ値になります。
以下の例では、コントローラー側で ViewData["Value"] に値を設定し、ビュー側で ViewData["Value"] と ViewBag.Value の値を表示します。

ビューはHTMLなので、C# のコードを使う場合は、先頭に「@」を付ける必要があります。

プログラムを実行すると、ViewData["Value"] で設定した値が、ViewBag.Value でも表示されていることが分かります。

cs-mvc-2-1

RedirectToAction()メソッドの使い方

RedirectToAction()メソッドを使うと、他のコントローラーのメソッドを呼び出すことができます。
以下の例は、HomeController の Index()メソッドから WorkController の List()メソッドを呼び出します。

TempDataを使ってビューに値を渡す

RedirectToAction()メソッドを使ってビューを呼び出した場合は、TempData を使って値を渡すことができます。

RedirectToAction()メソッドを使った場合は、ViewData を使って値を渡すことはできません。

プログラムを実行すると、TempData["Value"] の値が表示されます。
また、URL も変わっていることが分かります。

cs-mvc-2-2

ここで注意しないといけないのは、RedirectToAction()メソッドは該当のコントローラーを経由して、ビューを表示しているということです。
例えば、WorkController の List()メソッド内で ViewData に値を設定して、ビューに渡すこともできます。

プログラムを実行すると、HomeController の Index()メソッドで設定した TempData["Value"] と、WorkController の List()メソッドで設定した ViewData["Value"] の値が表示されます。

cs-mvc-2-3

外部サイトにリダイレクトする

View()メソッドもRedirectToAction()メソッドもプロジェクト内のページを表示しましたが、Redirect()メソッドを使うと、URL を指定して外部のサイトを表示することができます。

プログラムを実行すると、外部のサイトに遷移します。

cs-mvc-2-4

Redirect()メソッドの詳しい内容は、以下のマイクロソフト公式サイトを参照してください。

-C#, PROGRAM
-,