10月17日(木)1、2コマ目
今日、やったこと
- 検索アプリをつくる(+ViewModelをつかう)
- [練習問題]練習問題4
今日のホワイトボード
検索アプリをつくる(前回のつづき)
前回からの続き。検索条件を選択するための選択リストにグループ一覧を表示するところまで作成済み。
〇POSTコマンドでリクエストした際の処理は?
検索ボタンをクリックすると、POSTコマンドでサーバーにリクエスト。コントローラーは[HttpPost]アノテーションが付いたアクションメソッドが実行される。
また、選択された検索条件はパラメータ名と同名の引数に渡される。
〇検索は
EntityFrameworkCoreを使ってDBアクセスしている。SQLのwhere句やorder by句に相当するWhere()メソッド、OrderByDescending()メソッドがある。
![]() |
| 図 LINQで検索、並び替え |
Controllers/SearchController.cs
Views/Search/Index.cshtml
検索アプリをつくる(+ViewModelをつかう)
コントローラーからビューにデータを渡す際、今まではViewDataを使っていた。
![]() |
| 図 [今まで]ViewDataでデータを受け渡し |
が、今回は新たにViewModelを使う。
![]() |
| 図 [これから]ViewModelでデータを受け渡し |
変更は以下のとおり。
Models/SearchViewModel.cs
コントローラーからビューに渡すデータをこのクラスでひとまとめにて受け渡す。
Controllers/SearchController.cs
ViewDataの代わりにViewModelのSearchViewModelを使って受け渡す。
return View()の引数に受け渡すViewModelを指定することを忘れずに。
Views/Search/Index.cshtml
@modelでSearchViewModelをViewModelとして利用することを宣言。
コントローラーから渡されたSearchViewModelはModelでアクセスできる。
ViewDataはキーを指定してデータセット、取り出しをしていた。取り出し時にキーを間違えてもコンパイルエラーにはならず、実行時エラーになる。(これは避けたい)
ViewModelはxxxクラスのインスタンスなので、プロパティにアクセスする際はインテリセンスで候補から選択できる。入力ミスは減るはず。
[練習問題]練習問題4
選択リストの選択肢「選択してください」はvalue属性を設定しなければ、0が取得できる。
![]() |
| 図 選択肢「選択してください」 |
次回は
練習問題の解説。



