C# PROGRAM

ASP.NET(C#) MVCモデル入門~ViewModelの使い方

ViewModelを使ってビューにオブジェクトを渡す

コントローラーからビューに値を渡す方法として、ViewData や TempData がありますが、これらは一つのパラメーターしか渡すことができません。
複数のパラメーターをビューに渡すには、ViewModel を使います。
今回の記事では、ViewModel の作成手順と使い方を解説します。

ViewModelの作成

ViewModelは、クラスとして定義します
一般的に「Models」フォルダーの配下に ViewModel を配置しますが、今回は「Models」フォルダーの配下に「ViewModels」というフォルダーを作成して、そこに ViewModel を配置します。

必ずこうしなければならないということはありませんが、「Models」フォルダーの配下は、ViewModel 以外のクラスも作成する可能性があるため、ViewModel 用のフォルダーを作成しています。

ViewModelを配置するフォルダーを作成

ソリューションエクスプローラーから Models フォルダーにカーソルを合わせます。

cs-mvc-3-1

右クリックして、「追加」→「新しいフォルダー」を選択します。

cs-mvc-3-2

フォルダー名を「ViewModels」に変更します。

cs-mvc-3-3

ViewModelsフォルダー配下にViewModelを作成

「ViewModels」フォルダーにカーソルを合わせて、右クリックから「追加」→「クラス」を選択します。

cs-mvc-3-4

「クラス」を選択して、ファイル名を「HomeViewModel.cs」に変更後、「追加」ボタンを押下します。

cs-mvc-3-5

「Models/ViewModels」フォルダー配下に、「HomeViewModel.cs」が作成されていることを確認します。

cs-mvc-3-6

ViewModelの編集

作成した ViewModel.csをダブルクリックして、以下のように編集します。
ViewModel には、プロパティーを定義します。

コントローラーの編集

ViewModel を作成したら、コントローラーで ViewModel が使えるように、インスタンス化して値を設定します。
View()メソッドの引数として、インスタンス化した ViewModel を渡します。

_ViewImports.cshtmlにViewModelを配置したパスを追加

Models 配下に ViewModels というフォルダーを作成したので、「_ViewImports.cshtml」に ViewModels フォルダーのパスを追加します。
このパスを追加しない場合、ビュー側で ViewModel を使う際に、フルパスで記述する必要があります。

ビューの編集

ビュー側で ViewModel を受け取るために、ViewModel の型を指定する必要があり、以下のように記述します。

@model ビューモデル名

ビューが受け取った ViewModel は、ビュー内で Modelオブジェクトに紐づけられます。
Model は Razorビューエンジンによって認識されるので、Model の先頭に「@」を付ける必要があります。

Model という名称は固定なので、変更できません。

プログラムの実行

プログラムを実行すると、以下のようにコントローラーで設定した値が表示されます。

cs-mvc-3-7

-C#, PROGRAM
-,