共用方式為


ASP.NET MVC 5.1 的新功能

Microsoft提供

本主題描述 ASP.NET Web MVC 5.1 的新功能。

軟體需求

下載

執行時間功能會在 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 類別進行延伸。

檢視中的列舉支援

  1. 新的 @Html.EnumDropDownListFor() 協助程式方法。 這些應該與大部分的 HTML 協助程式一樣使用,並注意運算式必須評估為列舉類型或可為 Null < 的 T >,其中 T列舉類型。 使用 EnumHelper.IsValidForEnumHelper() 來檢查這些需求。
  2. 傳回 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 的無干擾驗證

字串和陣列類型的用戶端驗證現在支援使用 MinLengthMaxLength 屬性裝飾的屬性。

在 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