【T5b】モデルとデータベースの連携(後編)(4/8)
プロジェクトタイプ | (注意: 本文参照) |
---|---|
プロジェクト名 | T5b |
ソリューション名 | PIT5 |
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については準備作業を参照せよ.
5b-4. Indexアクションとビューの作成
まずはIndex
アクションから実装していこう.このアクションではデータベースに存在しているすべての学生情報を
表示することにする1.
このためにIndex
アクションではT5bContext
クラスのフィールド_context
から全学生の情報を取得して,それ自体をモデルクラスとしてビューに渡す.
StudentsController
クラスのIndex
アクションを_に示すように書き換えよう.
|
|
4~6行目では,LINQを使ってT5bContext
クラスのStudents
プロパティにアクセスしてデータベース上のテーブルから全学生の情報を取得している.
8行目では取得した情報をリスト化してそれ自体をモデルとしてビューに渡している.チュートリアル【T4a】で見たように
View()
メソッドには, そのアクションに対応するビュー で表示/編集するモデルクラスのインスタンスを渡すことができる.
今回はまだこのIndex
アクションに対応するビューは作成していないが,後述するようにこのアクションに対応するビューでは
Student
クラスのリスト をモデルクラスとして指定する予定である.
次にこのIndex
アクションのためのビューを作成する. Views フォルダにコントローラー名と
同名のフォルダを作成して,このなかにIndex
という名前のビューを追加する.
今回はレイアウトページを使用しているので, 「レイアウトページを使用する」のチェックはオン にして作成することに注意する.
Views/Students/Index.cshtml を_のように変更する.
|
|
1行目で@model
ディレクティブでモデルクラスとしてIEnumerable<Student>
を指定している.
これでIndex()
メソッドの戻り値の部分でView()
メソッドの引数で渡したオブジェクトが
モデルクラスとして用いられる.
9行目では学生の人数を表示し,11~16行目では全学生の情報を ul 要素として
表示している.表示する情報は学生のID(@s.ID
),姓(@s.LastName
),名(@s.FirstName
)である.
また18行目では asp-action タグヘルパーを使用してCreate
アクションへのリンクを貼っている.
ここまで一度実行してみよう._のように表示されるはずである.まだデータベースには1件も
学生を登録していないので「人数: 0
」とのみ表示されている.