Произошли критические изменения .
Если вы хотите, чтобы проект 1.0 работал на 2.0, он ищет вещи в разных местах; , поэтому вам нужно будет перенести приложение на 2.0. .
Вот изменения, которые могут «сломаться» (по состоянию на Предварительный просмотр 2):
Изменения в предварительном просмотре 2
Помощники теперь возвращают MvcHtmlString
объект
Чтобы воспользоваться новым синтаксисом выражений в кодировке HTML в ASP.NET 4, тип возвращаемых помощников HTML теперь равен MvcHtmlString
вместо string
. Обратите внимание, что если вы используете ASP.NET MVC 2 и новые помощники в ASP.NET 3.5, вы не сможете воспользоваться синтаксисом HTML-кодирования; новый синтаксис доступен только при запуске ASP.NET MVC 2 в ASP.NET 4.
JsonResult
теперь отвечает только на запросы HTTP POST
Чтобы снизить вероятность атак с использованием JSON, которые могут привести к раскрытию информации, по умолчанию класс JsonResult
теперь отвечает только на запросы HTTP POST
. AJAX GET вызовы методов действия, которые возвращают объект JsonResult
, должны быть изменены, чтобы использовать вместо них POST. При необходимости вы можете переопределить это поведение, установив новое свойство JsonRequestBehavior
JsonResult
. Для получения дополнительной информации о потенциальной уязвимости см. Пост в блоге JSON Hijacking в блоге Фила Хаака.
Установщики свойств Model и ModelType в ModelBindingContext
устарели
В класс ModelBindingContext
добавлено новое настраиваемое свойство ModelMetadata
. Новое свойство инкапсулирует свойства Model и свойства ModelType
. Хотя свойства Model
и ModelType
устарели, для обратной совместимости средства получения свойств все еще работают; они делегируют свойству ModelMetadata
для получения значения.
Изменения в предварительном просмотре 1
DefaultControllerFactory
изменения класса разрушают производные от него фабрики контроллеров
Это изменение касается пользовательских фабрик контроллеров, которые происходят от DefaultControllerFactory
. Класс DefaultControllerFactory был исправлен путем удаления свойства RequestContext
и передачи экземпляра контекста запроса защищенным виртуальным методам GetControllerInstance
и GetControllerType
.
.
Фабрики пользовательских контроллеров часто используются для обеспечения внедрения зависимостей для приложений ASP.NET MVC.
Чтобы обновить фабрики пользовательских контроллеров для поддержки ASP.NET MVC 2, измените сигнатуру метода или сигнатуры, чтобы они совпадали с новыми сигнатурами, и вместо параметра используйте параметр контекста запроса.
«Зона» теперь является зарезервированным ключом значения маршрута
Строка «area» в значениях Route теперь имеет особое значение в ASP.NET MVC, так же, как это делают «controller» и «action». Одним из следствий этого является то, что если HTML-помощникам предоставляется словарь значений маршрута, содержащий «область», помощники больше не будут добавлять «область» в строку запроса.
Если вы используете функцию Области, не используйте {area}
как часть URL-адреса вашего маршрута.
Известные проблемы
Диалоговое окно «Добавить представление» создает исключение NullReferenceException, если установлен флажок «Создать строго типизированное представление», выбран вариант «Просмотр содержимого», отличный от «Пусто», и для типа, который существует, указывается имя типа класса «Просмотр данных» , При указании имени типа либо используйте раскрывающийся список, чтобы выбрать имя типа, либо введите полное имя типа. Для типов, которые не существуют, вы должны установить Просмотр содержимого на «Пусто».