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

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

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

ってな手順です。

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

20110118_06.jpg

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

このあたりは、ASP.NET MVC 2 と同じ。

[code lang=”csharp”]

public ActionResult List()
{
Models.mvcdbEntities ent = new Models.mvcdbEntities();
var model = ent.TProduct;
return View(model);
}
[/code]

View の追加では、ASP.NET MVC 2 と違うのは、View engine の選択ですね。

これもデフォルトが Rasor になっています。ビューエンジン(レンダリングエンジン)は、ページごとに切り替えられるようです。

20110118_07.jpg

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

[code lang=”csharp”]

@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>

[/code]

実行結果は、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 パーマリンク