Новые возможности ASP.NET MVC 5.1
В этом разделе описываются новые возможности ASP.NET Web MVC 5.1.
Требования к программному обеспечению
- Visual Studio 2012: скачайте ASP.NET and Web Tools 2013.1 для Visual Studio 2012.
- Visual Studio 2013: скачайте Visual Studio 2013 обновление 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 MVC 5.1 RTM доступны на веб-сайте ASP.NET ( https://www.asp.net).
Новые возможности в ASP.NET MVC 5.1
Улучшения маршрутизации атрибутов
Маршрутизация атрибутов теперь поддерживает ограничения, включая управление версиями и выбор маршрута на основе заголовков. Многие аспекты маршрутов атрибутов теперь можно настраивать с помощью IDirectRouteFactory
интерфейса и RouteFactoryAttribute
класса . Префикс маршрута теперь расширяем IRoutePrefix
через интерфейс и RoutePrefixAttribute
класс .
Поддержка перечисления в представлениях
- Новые
@Html.EnumDropDownListFor()
вспомогательные методы. Их следует использовать как и большинство вспомогательных html-элементов с предупреждением о том, что выражение должно вычисляться как тип перечисления или T, допускающий<значение NULL,> гдеT
является типом перечисления . ИспользуйтеEnumHelper.IsValidForEnumHelper()
для проверка этих требований. - Новые
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 |