PROGRAM VISUALBASIC

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

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

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

View()メソッドの使い方

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

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

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

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

View()メソッドを使ってビューを呼び出した場合は、ViewData()またはViewBagを使って値を渡すことができます。
なお、ViewData()とViewBagは同じ領域を使用しているため、例えばViewData("Value")とViewBag.Valueは、同じ内容になります。

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

プログラムを実行すると、ViewData("Value")の内容が画面に表示されます。

vbmvc3-1
実行結果

RedirectToAction()メソッドの使い方

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

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

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

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

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

vbmvc3-2
実行結果

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

プログラムを実行すると、HomeControllerのIndex()で渡したTempData("Value")と、WorkControllerのList()で渡したViewData("Value")の内容が表示されます。

vbmvc3-3
実行結果

Redirect()メソッドの使い方

Redirect()メソッドは、URLを指定して外部のサイトを表示することができます。

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

vbmvc3-4
実行結果

-PROGRAM, VISUALBASIC
-,