ASP.NET MVC 3 で Entity Data Model を利用する

実は、ASP.NET MVC 2 と全く同じですね。

  • データベースから Entity Data Model を作る。
  • モデルを利用したコントローラーを作成する。
  • リストなどを表示させるビューを自動生成する。

ってな手順です。

こんな風なモデルを使って、

20110118_06.jpg

次のようにコントローラーを書いておきます。

このあたりは、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 になっています。ビューエンジン(レンダリングエンジン)は、ページごとに切り替えられるようです。

20110118_07.jpg

で、自動生成した結果がこれ。


@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 と同じ。

20110118_08.jpg

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/

との相互運用(相互補完?)とか考えてみたり。

 

 

カテゴリー: 開発, ASP.NET パーマリンク