Я могу выполнить приложение MVC 1 с помощью MVC 2 блока без помехи? Я понимаю, что некоторые сторонние инструменты имели материал, прерванный MVC 2, но давайте предположим, что я не использую те никакие другие инструменты.
Были критические изменения .
Если вы хотите, чтобы проект 1.0 работал на 2.0, он действительно ищет вещи в разных местах; , поэтому вам придется перенести приложение на 2.0. .
Вот изменения, которые могут «сломаться» (актуально для Preview 2):
Изменения в Preview 2
MvcHtmlString
Для того, чтобы Преимущество нового синтаксиса выражений кодирования HTML в ASP.NET 4, возвращаемый тип помощников HTML теперь MvcHtmlString
вместо строки
. Обратите внимание, что если вы используете 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 в блоге Фила Хаака.
ModelBindingContext
устарели Новое устанавливаемое свойство ModelMetadata
было добавлено в класс ModelBindingContext
. Новое свойство инкапсулирует свойства Model и ModelType
. Хотя свойства Model
и ModelType
устарели, для обратной совместимости геттеры свойств все еще работают; они делегируют свойству ModelMetadata
для получения значения.
Изменения в предварительной версии 1
Изменения класса DefaultControllerFactory
нарушают производные от него фабрики настраиваемых контроллеров Это изменение затрагивает фабрики настраиваемых контроллеров, которые являются производными от DefaultControllerFactory
. Класс DefaultControllerFactory был исправлен путем удаления свойства RequestContext
и передачи экземпляра контекста запроса защищенным виртуальным методам GetControllerInstance
и GetControllerType
.
Чтобы обновить фабрики настраиваемых контроллеров для поддержки ASP.NET MVC 2, измените подпись метода или подписи в соответствии с новыми подписями и используйте параметр контекста запроса вместо свойства.
Строка «область» в значениях маршрута теперь имеет особое значение в ASP.NET MVC, точно так же, как «контроллер» и «действие».Одно из следствий состоит в том, что если помощники HTML снабжаются словарем значений маршрута, содержащим «площадь», помощники больше не будут добавлять «площадь» в строку запроса.
Если вы используете функцию «Области», не используйте {область}
как часть URL-адреса вашего маршрута.
Известные проблемы
В диалоговом окне «Добавить представление» выдается исключение NullReferenceException, когда установлен флажок «Создать строго типизированное представление», выбран вариант «Содержимое представления», отличный от «Пустой», и для параметра указано имя типа класса данных «Просмотр». тип, который действительно существует. При указании имени типа используйте раскрывающийся список для выбора имени типа или введите полное имя типа. Для несуществующих типов необходимо установить для параметра «Просмотр содержимого» значение «Пусто».
Ознакомьтесь с этим документом. Вы узнаете о критических изменениях: http://go.microsoft.com/fwlink/?LinkID=157072
Меня укусила одна проблема: все поля модели теперь всегда проверяются в сообщениях.
Изменения описаны Брэдом Уилсоном здесь .
Сообщение в блоге Стива Андерсона описывает проблему и мое любимое решение (с использованием специального валидатора).