Действительно ли ASP.NET MVC 1 вперед совместим с ASP.NET MVC 2?

Я могу выполнить приложение MVC 1 с помощью MVC 2 блока без помехи? Я понимаю, что некоторые сторонние инструменты имели материал, прерванный MVC 2, но давайте предположим, что я не использую те никакие другие инструменты.

8
задан Gabe 4 February 2010 в 19:11
поделиться

3 ответа

Были критические изменения .

Если вы хотите, чтобы проект 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 в блоге Фила Хаака.

Установщики свойств Model и ModelType в ModelBindingContext устарели

Новое устанавливаемое свойство ModelMetadata было добавлено в класс ModelBindingContext . Новое свойство инкапсулирует свойства Model и ModelType . Хотя свойства Model и ModelType устарели, для обратной совместимости геттеры свойств все еще работают; они делегируют свойству ModelMetadata для получения значения.

Изменения в предварительной версии 1

Изменения класса DefaultControllerFactory нарушают производные от него фабрики настраиваемых контроллеров

Это изменение затрагивает фабрики настраиваемых контроллеров, которые являются производными от DefaultControllerFactory . Класс DefaultControllerFactory был исправлен путем удаления свойства RequestContext и передачи экземпляра контекста запроса защищенным виртуальным методам GetControllerInstance и GetControllerType .

Пользовательские фабрики контроллеров часто используются для внедрения зависимостей для приложений ASP.NET MVC.

Чтобы обновить фабрики настраиваемых контроллеров для поддержки ASP.NET MVC 2, измените подпись метода или подписи в соответствии с новыми подписями и используйте параметр контекста запроса вместо свойства.

«Область» теперь является зарезервированным ключом значения маршрута.

Строка «область» в значениях маршрута теперь имеет особое значение в ASP.NET MVC, точно так же, как «контроллер» и «действие».Одно из следствий состоит в том, что если помощники HTML снабжаются словарем значений маршрута, содержащим «площадь», помощники больше не будут добавлять «площадь» в строку запроса.

Если вы используете функцию «Области», не используйте {область} как часть URL-адреса вашего маршрута.

Известные проблемы

В диалоговом окне «Добавить представление» выдается исключение NullReferenceException, когда установлен флажок «Создать строго типизированное представление», выбран вариант «Содержимое представления», отличный от «Пустой», и для параметра указано имя типа класса данных «Просмотр». тип, который действительно существует. При указании имени типа используйте раскрывающийся список для выбора имени типа или введите полное имя типа. Для несуществующих типов необходимо установить для параметра «Просмотр содержимого» значение «Пусто».

7
ответ дан 5 December 2019 в 18:59
поделиться

Ознакомьтесь с этим документом. Вы узнаете о критических изменениях: http://go.microsoft.com/fwlink/?LinkID=157072

1
ответ дан 5 December 2019 в 18:59
поделиться

Меня укусила одна проблема: все поля модели теперь всегда проверяются в сообщениях.

Изменения описаны Брэдом Уилсоном здесь .

Сообщение в блоге Стива Андерсона описывает проблему и мое любимое решение (с использованием специального валидатора).

1
ответ дан 5 December 2019 в 18:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: