ASP.NET MVC 5.1 の新機能
作成者: Microsoft
このトピックでは、ASP.NET Web MVC 5.1 の新機能について説明します。
ソフトウェア要件
- Visual Studio 2012: ASP.NET および Web Tools 2013.1 for Visual Studio 2012 をダウンロードします。
- Visual Studio 2013: Visual Studio 2013 Update 1 をダウンロードします。 この更新プログラムは、MVC 5.1 Razor ビュー ASP.NET を編集するために必要です。
ダウンロード
ランタイム機能は、NuGet ギャラリーで NuGet パッケージとしてリリースされます。 ランタイム パッケージはすべてセマンティック バージョンの仕様に従います。 ASP.NET MVC 5.1 RTM パッケージの最新バージョンは、"5.1.2" です。 これらのパッケージは、NuGet を使用してインストールまたは更新できます。 このリリースには、NuGet 上の対応するローカライズされたパッケージも含まれています。
リリース済みの NuGet パッケージは、NuGet パッケージ マネージャー コンソールを使用してインストールまたは更新できます。
Install-Package Microsoft.AspNet.Mvc -Version 5.1.2
ドキュメント
ASP.NET MVC 5.1 RTM に関するチュートリアルとその他の情報は、ASP.NET Web サイト (https://www.asp.net) から入手できます。
ASP.NET MVC 5.1 の新機能
属性ルーティングの機能強化
属性ルーティングで制約がサポートされ、バージョン管理とヘッダーベースのルートの選択が可能になりました。 属性ルートの多くの側面が、IDirectRouteFactory
インターフェイスと RouteFactoryAttribute
クラスを介してカスタマイズできるようになりました。 ルート プレフィックスは、IRoutePrefix
インターフェイスと RoutePrefixAttribute
クラスを介して拡張できるようになりました。
ビューでの列挙型のサポート
- 新しい
@Html.EnumDropDownListFor()
ヘルパー メソッド。 これらは、式が列挙型 または Null 許容 <T> に評価される必要があることを警告する HTML ヘルパーのほとんどと同様に使用する必要があります。ここでT
、 は列挙型です。 これらの要件をチェックするには、EnumHelper.IsValidForEnumHelper()
を使用します。 IList<SelectListItem>
を返す新しいEnumHelper.GetSelectList()
メソッド。 これは、たとえば@Html.DropDownListFor()
を呼び出す前に選択リストを操作する必要がある場合、または@Html.EnumDropDownListFor()
が表示する名前を表示したい場合に便利です。
次のコードは、これらの API を示しています。
@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
@Html.EnumDropDownListFor(model => model, htmlAttributes: new { @class = "form-control" })
}
@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
foreach (SelectListItem item in EnumHelper.GetSelectList(ViewData.ModelMetadata,
(Enum)Model)) { … }
}
完全な例 については、こちらを参照してください。
エディター テンプレートのブートストラップ サポート
EditorFor で HTML 属性を匿名オブジェクトとして渡すようになりました。
次に例を示します。
@Html.EditorFor(model => model, new { htmlAttributes = new { @class = "form-control" }, })
MinLengthAttribute と MaxLengthAttribute の控えめな検証
文字列型と配列型のクライアント側検証が、MinLength 属性と MaxLength 属性で修飾されたプロパティでサポートされるようになりました。
控えめな Ajax での "this" コンテキストのサポート
コールバック関数 (OnBegin, OnComplete, OnFailure, OnSuccess
) は、this
コンテキストを介して呼び出し元の要素を検索できるようになりました。 次に例を示します。
@Ajax.ActionLink("Click me", "AjaxAction", new AjaxOptions { UpdateTargetId = "foo", OnBegin = "OnClick" })
<script>
function OnClick(jqXHR) {
if ($(this).hasClass("foo")) {
jqXHR.setRequestHeader("custom-header", "value");
}
}
</script>
既知の問題と重大な変更
属性ルーティング
属性ルーティングの一致のあいまいさが、最初の一致を選択するのではなく、エラーを報告するようになりました。
属性ルーティングでは、{controller}
パラメーターを使用したり、アクションに配置されたルートで {action}
パラメーターを使用したりすることは禁止されています。 これらのパラメーターを使用すると、あいまいさが生じる可能性が非常に高くなります。
MVC/Web API を 5.1 パッケージでプロジェクトにスキャフォールディングすると、プロジェクトにまだ存在しないパッケージに対しては 5.0 パッケージが作成されます
ASP.NET MVC 5.1 RTM の NuGet パッケージを更新しても、ASP.NET スキャフォールディングや ASP.NET Web アプリケーション プロジェクト テンプレートなどの Visual Studio ツールは更新されません。 これらのツールでは、ASP.NET ランタイム パッケージの旧バージョン (5.0.0.0) を使用します。 その結果、ASP.NET スキャフォールディングでは、必要なパッケージがプロジェクトでまだ使用できない場合、旧バージョン (5.0.0.0) がインストールされます。 ただし、Visual Studio 2013 RTM または Update 1 の ASP.NET スキャフォールディングでは、プロジェクト内の最新のパッケージは上書きされません。 プロジェクトのパッケージを Web API 2.1 または ASP.NET MVC 5.1 に更新した後に ASP.NET スキャフォールディングを使用する場合は、Web API と ASP.NET MVC のバージョンに一貫性があることを確認してください。
Visual Studio 2013 での Razor ビューの構文の強調表示
Visual Studio 2013 を更新せずに ASP.NET MVC 5.1 RTM に更新した場合、Razor ビューの編集中に Visual Studio エディターで構文の強調表示がサポートされることはありません。 このサポートを受けるためには、Visual Studio 2013 を更新する必要があります。
型の名前変更
属性ルーティング拡張機能に使用される型の一部は、5.1 RTM で名前が変更されます。
古い型名 (5.1 RC) | 新しい型名 (5.1 RTM) |
---|---|
IDirectRouteProvider | IDirectRouteFactory |
RouteProviderAttribute | RouteFactoryAttribute |
DirectRouteProviderContext | DirectRouteFactoryContext |