由Microsoft提供
本主題描述 ASP.NET Web MVC 5.1 的新功能。
軟體需求
- Visual Studio 2012:下載ASP.NET 和 Web 工具 2013.1 for Visual Studio 2012。
- Visual Studio 2013:下載Visual Studio 2013 Update 1。 編輯 ASP.NET MVC 5.1 Razor 檢視需要此更新。
下載
執行時間功能會在 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 網站 https://www.asp.net () 提供 ASP.NET MVC 5.1 RTM 的教學課程和其他資訊。
ASP.NET MVC 5.1 中的新功能
屬性路由改善
屬性路由現在支援條件約束,啟用版本設定和標頭型路由選取。 屬性路由的許多層面現在可透過 IDirectRouteFactory 介面和 RouteFactoryAttribute 類別來自訂。 路由前置詞現在可透過 IRoutePrefix 介面和 RoutePrefixAttribute 類別進行延伸。
檢視中的列舉支援
- 新的
@Html.EnumDropDownListFor()協助程式方法。 這些應該與大部分的 HTML 協助程式一樣使用,並注意運算式必須評估為列舉類型或可為 Null < 的 T >,其中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 屬性裝飾的屬性。
在 Unobtrusive 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 Scaffolding 至具有 5.1 套件的專案會產生 5.0 個套件,而專案中尚未存在的專案則會產生 5.0 個套件
更新 ASP.NET MVC 5.1 RTM 的 NuGet 套件不會更新 Visual Studio 工具,例如 ASP.NET Scaffolding 或 ASP.NET Web 應用程式專案範本。 他們會使用舊版的 ASP.NET 執行時間套件, (5.0.0.0) 。 如此一來,ASP.NET Scaffolding 將會安裝舊版 (5.0.0.0) 所需的套件,如果您的專案中尚未提供這些套件。 不過,Visual Studio 2013 RTM 或 Update 1 中的 ASP.NET Scaffolding 不會覆寫專案中的最新套件。 如果您在將專案的套件更新為 Web API 2.1 或 ASP.NET MVC 5.1 之後使用 ASP.NET Scaffolding,請確定 Web API 和 ASP.NET MVC 的版本一致。
Visual Studio 2013中 Razor 檢視的語法醒目提示
如果您更新至 ASP.NET MVC 5.1 RTM 而不更新Visual Studio 2013,則編輯 Razor 檢視時,將不會取得 Visual Studio 編輯器對語法醒目提示的支援。 您必須更新Visual Studio 2013才能取得此支援。
類型重新命名
某些用於屬性路由擴充性的類型會在 5.1 RTM 中重新命名。
| 舊類型名稱 (5.1 RC) | 新類型名稱 (5.1 RTM) |
|---|---|
| IDirectRouteProvider | IDirectRouteFactory |
| RouteProviderAttribute | RouteFactoryAttribute |
| DirectRouteProviderCoNtext | DirectRouteFactoryCoNtext |