RealPath:
WebPath:
2016/11/08 17:47 (JST) 更新
掲示板作成 >>

Scaffolding

Contents

Scaffolding という機能により、さきほど定義したモデル(およびデータベースコンテキスト)を元に、コントローラとビューを自動生成することができます。

これにより提供される機能はいわゆる CRUD (Create, Read, Update, Delete) と呼ばれるものになります。

注意:Scafoolding が失敗する場合(2016/10/20追記)

Scaffolding が失敗する場合、一度プロジェクトのリビルドを実行してみてください。

Scaffolding によるコントローラとビューの生成

Controllers フォルダの右クリックメニューから [Add] - [Controller...] を選択。
img--700--size

[MVC5 Controller with views, using Entity Framework] を選択。
img--700--size

さきほど作成した Comment クラスおよび BbsDbContext クラスを入力し、Add を押します。
(このクラス名は途中まで打ち込めばあとは自動補完してくれるのでそれに従えば良いです)
img--500--size

いくつかのチェックボックスについて解説しておきます。

  • Use async controller actions
    • アクションを非同期にするかどうか
  • Generate views
    • ビューを生成するかどうか
  • Reference script libraries
    • 各ビューに必要であればJavaScriptを埋め込むかどうか(ポスト前の値検証等)
  • Use a layout page
    • ビューを単体で表示させるか、レイアウトに含める形で表示させるか

踏み込んだ説明は省きますが今回は(最低限必要なのは [Generate views] だけなのですが、後々の説明上の都合もあり)、
[Generate views], [Reference script libraries], [Use a layout page] の3つにチェックを付けて進めていきます。

~Scaffolding によるコントローラとビューの生成中~
img--400--size

これにより以下のファイルが作成されます。
img--250--size

実はもうこれだけで Comment データを CRUD する環境ができあがりました。

プロジェクトを実行し動作を確認してみましょう。

コメントの新規作成 (C = Create)

やや愚直ですが http://localhost:xxx/Comments/Create を直接 URL 入力して呼び出します。
img--300--size

コメント作成画面が表示されました。
img--400--size

ユーザ名、本文、日時を入力してコメントを作成してみます。
img--400--size

コメント作成が完了し、コメント一覧が表示されました。
img--600--size

コメントの表示 (R = Read)

http://localhost:xxx/Comments へのアクセスによりコメント一覧が表示されます。
img--600--size

各コメント行の [Details] リンクを押すと、
img--600--size

コメント詳細画面が開きます。今回は特段メリットは感じられないと思いますが、データのフィールド数が増えてくるとこういうページが役に立ちます。
img--350--size

コメントの変更 (U = Update)

コメントデータの変更を行ってみます。

一覧画面から [Edit] リンクを押してみます。
img--600--size

コメント編集画面が開きました。
img--400--size

適当に書き換えてみます。
img--400--size

一覧画面に戻り、本文が変更されたことが確認できました。
img--600--size

コメントの削除 (D = Delete)

コメントの削除動作を確認します。

一覧画面から [Delete] リンクを押します。
img--600--size

削除確認画面が開くので、さらにこの画面内の [Delete] リンクを押すと、
img--350--size

一覧画面に戻り、該当コメントが削除されたことが確認できました。
img--600--size

Scaffolding の動作確認おわり

以上、基本的なデータ操作 (CRUD = Create, Read, Update, Delete) が行えることが確認できました。

これが掲示板かというとまだ垢ぬけませんが、最低限の機能は提供されています。
次ページからは体裁を少しずつ整えていきます。