ASP.NET MVC 3 RC2 (Release Candidate 2) リリース & 2011 年 1 月には RTM に!
早くも、ASP.NET MVC 3 RC2 がリリースされました。
着々と RTM への準備が整ってきています。下記のブログでのアナウンスや、こちらの オルタナティブ・ブログ で書いた通り、 ASP.NET MVC 3 の RTM は 2011 年 1 月中旬 を予定しています。
ScottGu’s Blog
Announcing ASP.NET MVC 3 (Release Candidate 2)
Scott Hanselman’s Blog
Visual Studio Explosion! - VS2010 SP1 *BETA* Released and Context
今回の RC2 のリリースの主な理由は、 Visual Studio 2010 SP1 Beta への対応です。
Web Pages (Razor 構文記述による Web ページ) のインテリセンスやコードハイライト機能が、ASP.NET MVC 3 RC と Visual Studio 2010 SP1 Beta の組み合わせでは無効になってしまっていました。今回の ASP.NET MVC 3 RC2 では、この問題に対応していますので、Visual Studio 2010 SP1 Beta と共に ASP.NET MVC 3 をお使いになる場合には、この RC2 をご使用ください。
これ以外にも、RC2 では数多くの修正や変更がおこなわれています。ここでは ScottGu’s Blog の記事に記載のいくつかのトピックをご紹介します。
★ jQuery アップデート
プロジェクトに含まれる jQuery スクリプトが、jQuery 1.4.4 と jQuery Validation 1.7 にアップデートされました。
★ jQuery UI の追加
jQuery UI 1.8.6 が、正式にプロジェクトに追加され、標準で使用できるようになりました。jQuery UI は、jQuery ベースで作成された、クライアントサイドの UI コントロール群です。jQuery UI の詳細は https://jqueryui.com/ をご覧ください。
★ View スキャフォールディング機能の向上
View のスキャフォールディング時に、今までは Html.TextBoxFor が用いられていたものが、RC2 より Html.EditorFor (テンプレート・ヘルパー) に置き換えられました。これにより、テンプレート・ビューを用意することで、Model 単位で柔軟に View 定義を変更することができます。
また、モデルのプライマリ・キーに設定されている ID などは、スキャフォールドから除外されるようになっています。さらに、随所で jQuery のインテグレーションが進んでおり、Create や Edit などの View では、jQuery Validation が使用されるようになっています。
★ Session-less Controller のサポート
ASP.NET MVC 3 から Session-less controller のサポートが加わりました。さらに、RC2 では属性名が変更になりました。
using System.Web.SessionState;
namespace MVC3RC2.Controllers
{
[SessionState(SessionStateBehavior.Disabled)]
public class HomeController : Controller
{
...
}
}
★ AllowHtml 属性
フォームから POST されたデータに HTML 文字が含まれていた場合、XSS 対策のためデフォルトでエラーとなります。これを明示的に HTML 文字の POST を有効にしたい場合に、Model クラスの属性として AllowHtml 属性を使用することができます。
public class MyModel
{
[AllowHtml]
public string Name { get; set; }
...
}
※ 現在 RC2 で、この AllowHtml 属性を使うには、Global.asax の Application_Start() に、下記の記述が必要です。
ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider();
これは、RC2 の既知のバグです。
参考: https://stackoverflow.com/questions/4415451/asp-net-mvc3-rc2-allowhtml-not-working
★ Html.Raw(...) ヘルパー メソッド
Razor View エンジンでは、文字列は自動的に HTML エンコードされます。HTML エンコードしたくない場合には Html.Raw(...) ヘルパー メソッドを使用することができます。
@Html.Raw(Model.HtmlContent)
★ ViewModel/View から ViewBag への変更
ASP.NET MVC 3 の RC までは、ダイナミック プロパティを使って
// Controller
public ActionResult About()
{
ViewModel.Message = "ASP.NET MVC 3 RC";
return View();
}
// View (.cshtml)
<h2> @View.Message</h2>
のような記述が可能になっていました。ただ、Controller 側と View 側でオブジェクト名がことなり分かりづらいといったフィードバックから、ASP.NET MVC 3 RC2 からは、下記の通り ViewBag に統一されました。
// Controller
public ActionResult About()
{
ViewBag.Message = "ASP.NET MVC 3 RC";
return View();
}
// View (.cshtml)
<h2> @ViewBag.Message</h2>
★ OutputCache 属性
これまでは、アクションメソッドのパラメータ毎にキャッシュをおこなう場合に、VaryByParam 値の設定が必要でした。
[OutputCache(Duration = 3600, VaryByParam = "id") ]
public ActionResult Details(int id)
{
...
}
RC2 では、この VaryByParam が不要になり、自動でパラメータ毎にキャッシュが有効になりました。
[OutputCache(Duration = 3600) ]
public ActionResult Details(int id)
{
...
}
などなど ...
ASP.NET MVC 2 から ASP.NET MVC 3 へのアップグレードなど、その他の情報は ASP.NET MVC 3 RC2 のリリースノートをご参照ください。リリースノートは ASP.NET MVC 3 RC2 のダウンロードサイトから入手することができます。
この ASP.NET MVC 3 の RTM と共に、2011 年 1 月には WebMatrix や IIS Express, SQL Compact Edition 4 がリリースされます。さらに、来年以降リリースが予定されている Visual Studio 2010 SP1 では、IIS Express や SQL Compact Edition 4 のサポートも行われる予定です。
マイクロソフトの Web 開発環境が、さらに強化される年明け 1 月をお楽しみにー!