Download ASP.NET MVC 4 Beta from Official Microsoft Download Center
Developer Preview が BUILD で公開されてから結構時間がかかりましたが、ようやくベータが公開されましたね。どうやら Visual Studio 2010 SP1 専用のようで、.NET 4.5 DP がインストールされていると蹴られてしまいました。
削除にしばらく時間がかかるので、その間にベータで追加された機能をリストアップ。
ベータで追加されたっぽい機能
- ASP.NET Web API が追加
- RESTful な API を簡単に実装。Entity Framework だとコード書く必要がほぼない
- Web Pages のように単体でも使えるようになるっぽい
- WCF Web API とは完全に別物なので注意
- プロジェクトテンプレートが追加
- Web API、Single Page Application が追加された
- Single Page Application では knockout.js を使ってる!
- フルスキャフォールディングのテンプレートも追加
- Empty API Controller
- API controller with empty read/write actions
- Single Page Application with read/write actions and views, using Entity Framework
- 基本的に Web API を使うもの
リリースノートが公開されたら追記します。されたので追記しました。
ASP.NET MVC 4 : The Official Microsoft ASP.NET Site
基本的には Web API と Single Page Application (略称:SPA) の追加ぐらいですね。あまりにもひっそりとしすぎているのが Display Modes の変更でしょうか。
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone") { ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0) });
DP では DisplayModes クラスを使っていましたが、Beta からは DisplayModelProvider を使うのが正しいようです。しかし、このシングルトンは微妙に見た目が悪いですね。正式版ではまた修正されるかも。
そして Release Notes には書いてませんが Web Pages 2 (Razor) にも新機能が追加されているようです。
ASP.NET MVC 4 Beta Released! - Jon Galloway
Jon Galloway 氏のエントリによると、以下のような機能が追加されているようです。
- URL Resolution - Support for ~/ syntax
- Conditional attribute rendering
今までは静的なリソースを参照する時には Url.Content ヘルパーを使うのが一般的でした。
<link type="text/css" rel="stylesheet" href="@Url.Content("~/Content/Site.css")" />
これが Web Pages 2 では Url.Content が不要になりました。
<link type="text/css" rel="stylesheet" href="~/Content/Site.css" />
非常にシンプルになっていい感じですね。
そしてもう一つは属性の条件付き出力となります。今までは if で属性を出し分けしていました。
<div @if (errorClass != null) { <text>class="@errorClass"</text> }></div>
タグの中に if を書くのは見た目も悪いし、そもそもわかりにくいですね。Web Pages 2 では以下のようにシンプルに書けるようになりました。
<div class="@errorClass"></div>
面白いのが、この例の場合 errorClass が null の場合に出力されるタグに余計なスペースが出力されないことです。
<div></div>
ここまでタグや属性を認識しているのなら、個人的には Minify が欲しいですね。