実は、ASP.NET MVC 2 と全く同じですね。
- データベースから Entity Data Model を作る。
- モデルを利用したコントローラーを作成する。
- リストなどを表示させるビューを自動生成する。
ってな手順です。
こんな風なモデルを使って、
次のようにコントローラーを書いておきます。
このあたりは、ASP.NET MVC 2 と同じ。
1 2 3 4 5 6 | public ActionResult List() { Models.mvcdbEntities ent = new Models.mvcdbEntities(); var model = ent.TProduct; return View(model); } |
View の追加では、ASP.NET MVC 2 と違うのは、View engine の選択ですね。
これもデフォルトが Rasor になっています。ビューエンジン(レンダリングエンジン)は、ページごとに切り替えられるようです。
で、自動生成した結果がこれ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | @model IEnumerable<MvcApplication1.Models.TProduct> @{ ViewBag.Title = "List" ; } <h2>List</h2> <p> @Html.ActionLink( "Create New" , "Create" ) </p> <table> <tr> <th></th> <th> name </th> <th> price </th> <th> cateid </th> </tr> @ foreach ( var item in Model) { <tr> <td> @Html.ActionLink( "Edit" , "Edit" , new { id=item.id }) | @Html.ActionLink( "Details" , "Details" , new { id=item.id }) | @Html.ActionLink( "Delete" , "Delete" , new { id=item.id }) </td> <td> @item.name </td> <td> @item.price </td> <td> @item.cateid </td> </tr> } </table> |
実行結果は、ASP.NET MVC 2 と同じ。
Rasor のレンダリングエンジンを使うと、「@なんとか」で C# や Visual Basic のコードが書けます。
今までの aspx のコードは「<% … %>」で書いていたので、「@{ … }」と書けて便利。と言いますか、メリットはそれだけなのか?ちょっと、これはもう少し調べてみないとわかりませんが。
ただ、aspx と Razor の違いは、
- aspx は、HTML 形式の中に、<% … %> でコードを埋め込む。
- Razor は、HTML 形式の中に、@{ … } で、コードを埋め込む。
- Razor は、コードの中に、ヒアドキュメント風に <text>…</text> で HTML 形式を埋め込む。
のところですね。
プロパティを使って表示するところは <%: item.name %> から、@item.name のように「@」マークひとつで書けるので、コードがすっきりしているといえばそうなのですが、PHP に慣れてくると、<?php … ?> で十分かぁと思ってしまうからなぁ。
このあたりは、
CakePHP: 高速開発 php フレームワーク。 Home
http://cakephp.jp/
との相互運用(相互補完?)とか考えてみたり。