実は、ASP.NET MVC 2 と全く同じですね。
- データベースから Entity Data Model を作る。
- モデルを利用したコントローラーを作成する。
- リストなどを表示させるビューを自動生成する。
ってな手順です。
こんな風なモデルを使って、
次のようにコントローラーを書いておきます。
このあたりは、ASP.NET MVC 2 と同じ。
public ActionResult List() { Models.mvcdbEntities ent = new Models.mvcdbEntities(); var model = ent.TProduct; return View(model); }
View の追加では、ASP.NET MVC 2 と違うのは、View engine の選択ですね。
これもデフォルトが Rasor になっています。ビューエンジン(レンダリングエンジン)は、ページごとに切り替えられるようです。
で、自動生成した結果がこれ。
@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/
との相互運用(相互補完?)とか考えてみたり。