ASP.NET MVC 3 RC2 (Release Candidate 2) リリース & 2011 年 1 月には RTM に!

早くも、ASP.NET MVC 3 RC2 がリリースされました。

ダウンロードはこちら ...

 

着々と RTM への準備が整ってきています。下記のブログでのアナウンスや、こちらの オルタナティブ・ブログ で書いた通り、 ASP.NET MVC 3RTM2011 年 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.4jQuery Validation 1.7 にアップデートされました。

★ jQuery UI の追加

jQuery UI 1.8.6 が、正式にプロジェクトに追加され、標準で使用できるようになりました。jQuery UI は、jQuery ベースで作成された、クライアントサイドの UI コントロール群です。jQuery UI の詳細は https://jqueryui.com/ をご覧ください。

Fig1

★ View スキャフォールディング機能の向上

View のスキャフォールディング時に、今までは Html.TextBoxFor が用いられていたものが、RC2 より Html.EditorFor (テンプレート・ヘルパー) に置き換えられました。これにより、テンプレート・ビューを用意することで、Model 単位で柔軟に View 定義を変更することができます。

また、モデルのプライマリ・キーに設定されている ID などは、スキャフォールドから除外されるようになっています。さらに、随所で jQuery のインテグレーションが進んでおり、Create や Edit などの View では、jQuery Validation が使用されるようになっています。

Fig2

★ 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 月をお楽しみにー!