Поделиться через


Новые возможности ASP.NET MVC 5.1

от Корпорации Майкрософт

В этом разделе описываются новые возможности 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 MVC 5.1 RTM доступны на веб-сайте ASP.NET ( https://www.asp.net).

Новые возможности в ASP.NET MVC 5.1

Улучшения маршрутизации атрибутов

Маршрутизация атрибутов теперь поддерживает ограничения, включая управление версиями и выбор маршрута на основе заголовков. Многие аспекты маршрутов атрибутов теперь можно настраивать с помощью IDirectRouteFactory интерфейса и RouteFactoryAttribute класса . Префикс маршрута теперь расширяем IRoutePrefix через интерфейс и RoutePrefixAttribute класс .

Поддержка перечисления в представлениях

  1. Новые @Html.EnumDropDownListFor() вспомогательные методы. Их следует использовать как и большинство вспомогательных html-элементов с предупреждением о том, что выражение должно вычисляться как тип перечисления или T, допускающий<значение NULL,> где T является типом перечисления . Используйте EnumHelper.IsValidForEnumHelper() для проверка этих требований.
  2. Новые EnumHelper.GetSelectList() методы, возвращающие .IList<SelectListItem> Это полезно, если необходимо управлять списком выбора перед вызовом, например , @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)) { … }
}

Полный пример см. здесь.

Поддержка начальной загрузки для шаблонов редакторов

Теперь мы разрешаем передавать атрибуты HTML в EditorFor в качестве анонимного объекта.

Пример:

@Html.EditorFor(model => model, new { htmlAttributes = new { @class = "form-control" }, })

Ненавязчивая проверка minLengthAttribute и MaxLengthAttribute

Теперь проверка на стороне клиента для типов строк и массивов будет поддерживаться для свойств, украшенных атрибутами MinLength и MaxLength .

Поддержка контекста this в ненавязчивом Ajax

Функции обратного вызова (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 для тех, которые еще не существуют в проекте

Обновление пакетов NuGet для ASP.NET MVC 5.1 RTM не обновляет средства Visual Studio, такие как ASP.NET формирование шаблонов или шаблон проекта веб-приложения ASP.NET. Они используют предыдущую версию пакетов среды выполнения ASP.NET (5.0.0.0). В результате ASP.NET формирования шаблонов установит предыдущую версию (5.0.0.0) необходимых пакетов, если они еще не доступны в проектах. Однако ASP.NET формирования шаблонов в Visual Studio 2013 RTM или обновлении 1 не перезаписывают последние пакеты в проектах. Если вы используете ASP.NET формирования шаблонов после обновления пакетов проектов до веб-API 2.1 или ASP.NET MVC 5.1, убедитесь, что версии веб-API и ASP.NET MVC согласованы.

Выделение синтаксиса для представлений Razor в Visual Studio 2013

При обновлении до ASP.NET MVC 5.1 RTM без обновления Visual Studio 2013 вы не получите поддержку редактора Visual Studio для выделения синтаксиса при редактировании представлений Razor. Чтобы получить эту поддержку, необходимо обновить Visual Studio 2013.

Переименование типов

Некоторые типы, используемые для расширения маршрутизации атрибутов, переименованы в RTM 5.1.

Старое имя типа (5.1 RC) Новое имя типа (5.1 RTM)
IDirectRouteProvider IDirectRouteFactory
RouteProviderAttribute RouteFactoryAttribute
DirectRouteProviderContext DirectRouteFactoryContext