Выпущена новая версия ASP.NET MVC 3 RC2







Прошел всего месяц с выхода ASP.NET MVC 3 RC, но команда разработчиков готова представить новую версию ASP.NET MVC 3 RC2. Этот выпуск можно назвать внеочередным, поскольку он предназначен для решения проблемы совместимости с недавно выпущенным пакетом Visual Studio 2010 Service Pack 1 Beta.

Однако, кроме совместимости с пакетом исправлений для Visual Studio 2010 в MVC 3 RC2 представлен ряд изменений, о которых необходимо знать разработчикам. Ниже представлено описание этих нововведений.

Загрузить пакет ASP.NET MVC 3 RC2 можно по этой ссылке.

Обновленные версии jQuery, jQuery Validation и jQuery UI в шаблонах проектов

В ASP.NET MVC 3 RC обновились шаблоны проектов, которые теперь содержат последние версии JavaScript-библиотек jQuery 1.4.4, jQuery Validation 1.7 и jQuery UI 1.8.6.

Новый атрибут AdditionalMetadataAttribute

В MVC 3 RC2 добавлен новый атрибут AdditionalMetadataAttribute, который позволяет добавлять дополнительные пользовательские метаданные для моделей.

image

В дальнейшем, эти дополнительные метаданные будут доступны в коллекции ModelMetadata.AdditionalValues данных представления.

Улучшения в механизме скаффолдинга представлений

Теперь при генерации представлений через пункт меню “Add View” используются методы Html.EditorFor вместо прежних явных Html.TextBoxFor и других. Это позволит автоматически создавать представления использующие механизм скаффолдинга и пользовательские представления типов данных.

Кроме того, автоматически сгенерированные представления теперь содержат ссылки на JavaScript-библиотеки необходимые для клиентской валидации.

Автоматическая генерация представлений теперь поддерживает определение ключевых полей (атрибут KeyAttribute) модели, которые не требуется выводить в представлении для редактирования.

Добавлен вспомогательный метод Html.Raw

По умолчанию весь вывод значений модели в представлениях ASP.NET MVC 3 экранируется. Для упрощения вывода значений полей модели, которые могут содержать HTML-разметку введен новый вспомогательный метод Html.Raw.

Например, если мы захотим передать следующее значение в представление:

image

то результатом будет экранированная строка:

image

Для того, чтобы избежать экранирования можно воспользоваться новым вспомогательным методом:

image

Мы получим требуемый результат:

image

Разработчики должны понимать ответственность вывода на странице неэкранированных значений пользовательского ввода. В целях безопасности, всегда следует экранировать значения, которые добавляет на сайт пользователь.

Переименование старых названий

В ASP.NET MVC 3 RC2 ряд названий классов, свойств атрибутов был переименован по запросу пользователей. Новые имена призваны более правильно отражать суть элементов.

Свойства Controller.ViewModel и View (у представлений) переименованы в ViewBag

Должно быть это самое важное переименование, которое затрагивает практически все созданные ранее проекты на базе ASP.NET MVC 3. Ранее введенные в MVC 3 динамические свойства, которые содержали информацию для представления в контроллере и самом представлении именовались по-разному: ViewModel и View. Теперь их имена унифицировали под одним именем: ViewBag.

Атрибут ControllerSessionStateAttribute переименован в SessionStateAttribute

Введенный ранее атрибут ControllerSessionStateAttribute предназначенный для управления состоянием сессий теперь получил новое короткое имя SessionStateAttribute.

Свойство Fields атрибута RemoteAttribute переименовано в AdditionalFields

Свойство Fields атрибута RemoteAttribute, с помощью которого можно указать дополнительные свойства необходимые для валидации, было переименовано в более логичное AdditionalFields.

Атрибут SkipRequestValidationAttribute переименован в AllowHtmlAttribute

Атрибут SkipRequestValidationAttribute, с помощью которого можно отключить механизм валидации запросов для определенных параметров, был переименован AllowHtmlAttribute. Новое название отражает предназначение атрибута.

Изменено поведение Html.ValidationMessage при отображении ошибок валидации

Ранее метод Html.ValidationMessage отображал первое доступное сообщение об ошибках валидации. Иногда таким сообщением могло быть сообщение соответствующее произошедшему исключению, что не подходит для вывода на форме описания ошибки.

В ASP.NET MVC 3 RC2 метод Html.ValidationMessage выводит первое “полезное” сообщение об ошибке, игнорируя сообщения связанные с исключениями. Если никаких полезных сообщений, кроме сообщения связанного с исключением не доступно, то будет использоваться сообщения от исключения.

Исправления

В ASP.NET MVC3 было представлено несколько исправлений в поведении в разных частях фреймворка.

Декларация @model

Декларация @model больше не оставляет в разметке страницы пустой строки

Вспомогательный метод LabelFor

Исправлена ошибка, когда вспомогательный метод LabelFor генерировал для атрибута for значение name элемента, вместо значения id, которое требуется по стандарту.

Метод RenderAction

В предыдущих версиях ASP.NET MVC передача явных параметров в метод RenderAction игнорировалась и вместо них использовались текущие параметры формы во время биндинга модели в действии. В ASP.NET MVC 3 явные параметры переданные с методом RenderAction имеют приоритет над параметрами формы.

Во механизм движков представлений добавлено свойство FileExtensions

Новое свойство FileExtensions предназначено для указания расширений, которые могут обрабатывать движки представлений. Это нововведение сделано для того, чтобы можно было определить кокой движок использовать при явном указании исполнения файлов представлений:

image

Ранее данный вызов приводил к выполнению вызова через Web Forms (первым зарегистрированным движком представлений), что приводило к исключению. Теперь, с помощью нового свойства MVC 3 может определить какой из движков использовать для указанного файла.

Заключение

ASP.NET MVC 3 – это “полировочный” выпуск, который не содержит значительных изменений и нововведений. В этой версии представлены одни из последних исправлений и мелких изменений перед выпуском финальной версии ASP.NET MVC 3. Однако, даже незначительные изменения в RC2 необходимо знать каждому разработчику ASP.NET MVC.

Progg it
Добавить комментарий






Анатолий Денисов
12.12.2017 16:12
0
Владимир, спасибо за подробный разбор нововведений с наглядными примерами!

Один вопрос - по переименованию старых названий: старые все еще поддерживаются?
12.12.2017 16:27
0
нет, старые не поддерживаются, все они были введены в предварительных версиях MVC 3 и не повлияют на предыдущие стабильные версии MVC
Анатолий Денисов
13.12.2017 8:16
0
Владимир, понял, спасибо!
Tereshkovych Nazar
12.12.2017 17:16
0
В Вас ошибка!
http://my.jetscreenshot.com/demo/20101212-y8ou-141kb
А в общем клево, быстро и доходчиво.
Спасибо!
12.12.2017 17:41
0
спасибо, исправил
AK
14.12.2017 22:02
0
Никто не в курсе, как заставить работать клиентскую валидацию, когда ключ UnobtrusiveJavaScriptEnabled выставлен в true?
Добавить комментарий