- 出力キャッシュの改善
ASP.NET MVC 3の出力キャッシュシステムでは、コントローラのアクションメソッド上で[OutputCache]属性を宣言した時に、VaryByParamを指定する必要がなくなりました。MVC3は、アクションメソッド上に明示的なパラメータを持つ場合、自動的に出力キャッシュのエントリーを変化させ、以下のようなコードを使用して、アクション上の出力キャッシュをクリーンに有効化できます。

ページ全体の出力キャッシュに加え、ASP.NET MVC 3はパーシャルページのキャッシュもサポートしているため、ある出力領域をキャッシュし、複数のリクエストまたはコントローラで再利用できます。パーシャルページのキャッシュに対する[OutputCache]ビヘイビアはRC2で更新され、トップレベルのリクエストのURL構造とは逆に、入力パラメータに基づいてサブコンテンツのキャッシュエントリが変化します。これにより、以前のRCでのビヘイビアに比べ、キャッシュのシナリオがより簡単で強力なものになります。
- @model宣言は空白スペースを追加しない
以前のプレビューでは、Razorビューのトップにある強く型付けされた@model宣言は、描画されたHTMLの出力へ空白行を追加しました。これは修正されたので、宣言により空白スペースは挿入されません。
- 最初の利用価値のあるエラーメッセージを表示させるために"Html.ValidationMessage"メソッドを変更
Html.ValidationMessageヘルパーのビヘイビアは更新され、最初のエラーをただ表示するのではなく、最初の利用価値のあるエラーメッセージを表示するように更新されました。
モデルバインディングの間、ModelState辞書は、プロパティについてのエラーメッセージを持つ複数のソースから紐づけることができます。例えば、そのモデル自体(それがIValidatableObjectを実装している場合)、プロパティに適用された検証属性、またプロパティがアクセスされている間に投げられた例外などからです。
Html.ValidationMessageメソッドが検証メッセージを表示している時、例外が含まれるモデル状態のエントリをスキップするようになりました。これは、それらのエントリが、通常エンドユーザに向けたものではないからです。その代わり、このメソッドは、例外に関連の無い最初の検証メッセージを探して、それを表示します。もしメッセージが見つからない場合は、最初の例外に関連づいている一般的なエラーメッセージをデフォルトとします。
- RemoteAttribute 『Fields』から『AdditionalFields』
ASP.NET MVC 3には、検証構造にビルトインのリモート検証サポートが追加されました。つまり、ユーザーが編集したフォームの入力要素が本当に有効なのかどうかを検証するために、ASP.NET MVC 3が使用したクライアントサイドの検証スクリプトライブラリが、サーバー上に公開しているコントローラへ自動的に呼び戻せるということです(リアルタイムで検証の更新ができるようになります)。
これを行うには、モデル/ビューモデルのプロパティに[Remote]属性を添付します。これは、リモートで検証するために呼び出されるコントローラ/アクションを指定します。RCでは、この属性には『Fields』プロパティがあり、検証ロジックをサポートするために、クライアントからサーバーへ送られる入力要素を追加する時に使用します。このプロパティを分かりやすくするために、本日のRC2リリースで、『AdditionalFields』に名前変更しました。
- ViewResult.ModelおよびViewResult.ViewBagプロパティ
ViewResultクラスは、『Model』および『ViewBag』というプロパティを公開するようになりました。これにより、ビューを返すコントローラの単体テストがより簡単になり、ViewResult.ViewData.Modelプロパティを通じてモデルにアクセスせずによくなります。
インストレーション・ノート
ASP.NET MVC 3 RC2ビルド版は、ここからダウンロードしてインストールできます。これは、以前のASP.NET MVC 3 RCリリース版上にインストールできます(セットアップの一部としてモジュールを少し入れ替えるだけになります)。
上記のセットアップで更新されないコンポーネント(既にインストールされている場合)は、NuGetパッケージ・マネージャーです。既に、NuGetがインストールされている場合、Visual Studioエクステンションマネージャー([ツール]-[エクステンションマネージャー]のメニューオプション)を開いて[Update]タブをクリックしてください。その一覧に、NuGetがあるはずなので、横にある[Update]ボタンをクリックすると、本日のリリースにエクステンションが更新されます。
NuGetがインストールされていない場合(またASP.NET MVC RCビルド版をインストールしていない場合)、NuGetはASP.NET MVC 3のセットアップでインストールされますので、他に何も手順はありません。
まとめ
ASP.NET MVC 3の最終リリースにかなり近付いており、来月最終の『RTM』ビルド版を届ける予定です。ASP.NET MVC 2が出荷されてから、約7ヶ月しかたっていないのですが、チームがこのリリース版に追加してきた非常に多くの新機能や改善点(Razor、Unobtrusive JavaScript、NuGet、Dependency Injection、出力キャッシュなどなど)には本当に驚いています。これらについての詳細は、今後数週間に渡り、ブログ投稿していく予定です。
Hope this helps,
Scott
P.S. ブログに加え、現在Twitterを使って簡単な更新やリンク共有を行っています。twitter.com/scottguで、私をフォローしてください。

