Modelの使用
EntityFrameworkを使用し、Modelを使用したMVCでの処理を作成します。接続できる任意のSQLSerberのデータベースにテーブルを作成します。
CREATETABLE[dbo].[Table]
(
[Id] INTNOTNULLPRIMARYKEY,
[Name] VARCHAR(50)NULL
)
プロジェクトに「新しい項目」を追加します。

「ADO.NET Entity Data Model」を選択し、[追加]ボタンをクリック

「データベースからEF Designer」を選択して[次へ]ボタンをクリック

接続するデータベースを選択して[次へ]ボタンをクリック

ここで指定した接続設定名が後で指定するデータコンテキストクラス名になります。
先ほど作成したテーブルにチェックを入れ[完了]ボタンをクリック

警告が2回ほど出るかもしれないが[OK]ボタンをクリック

Entity(Model)が作成されます。

ここでいったんビルドを行ってください。

次に「Controllers」フォルダで右クリックからの追加のコントローラーを選択します。

「Entity Frameworkを使用した、ビューがあるMVC 6 コントローラー」を選択し、[追加]ボタンをクリックします。

モデルクラスに"Table"を指定し、データコンテキストクラスにEntity作成時に設定されたデータコンテキストクラスを指定し[追加]ボタンをクリックします。

スクリプトライブラリの参照はチェックしてもしなくてもかまいません。
「Controllers」フォルダ配下に「TableController」が作成されました。
「Views」フォルダ配下に「Table」フォルダが作成され「Table」フォルダ内に5つのビューが作成されました。

Views/Default/Index.cshtml」に以下のようにリンクを追加してください。(15行目)

デバック実行し、Default/Indexページを表示してください。
作成したリンクをクリックしてください。

作成した「Tables]のページが表示されます。
「Create New」のリンクを開きデータを登録してみてください。




データが作成されることが確認できるかと思います。
MVCの処理の流れに関して
以下のファイルにブレークポイントを設定していってください。Controller/TablesController.cs

Model1.edmx内にあるTable.cs

Views/Tables/Edit.cs

上記のブレークポイントを設定したらブラウザから作成したデータのEditリンクをクリックしデータを更新してみてください。
MVCの処理の流れがわかるかと思います。
ポイント:EditのリンクのURLの最後にIDに設定した"1"が指定したある。

TablesControllerのEditメソッドに処理が渡され、引数には1が指定されている

このid変数はApp_Start/RouteConfing.csで設定されているUrlParameter.Optionalに基づきURLの指定の位置の値をメソッドの引数として受け取ることができる。

引数で受け取ったIDをもとにTableからデータを取得しViewメソッドで取得したデータをModelとしてビューに渡している

ビューではメソッドから渡されたモデルをHtmlヘルパーを使用して表示処理を行っている。
メソッドから渡されるモデルの方はビューの先頭で「@model MVCSample.Table」という記述で宣言している。
※Htmlヘルパーに関してはここで説明すると果てしないためググって調べてください。

画面が表示されます。
[Save]ボタンをクリックするとサブミット処理が走り、登録処理が始まります。
[Save]ボタンをクリックしてみてください。

サブミット処理により画面に入力されていた値が送信されモデルに設定されます。

設定されたモデルがアクションメソッドに渡されます。

引数がTable型のEditメソッドが呼び出され、モデルが渡されます。
渡されたモデルを更新し、正常に更新された場合はreturn RedirectToAction("Index");を実行しIndexメソッドが実行されます。
ModelState.IsValidは渡されたモデルが正常の値が設定されている場合にtrueを返します。
不正の場合はfalseを返し、return View(table);が実行され再度編集画面が表示されます。
ここでは正常の値が設定されているのでデータが更新され一覧が表示されます。

- 次へ -