Совместим ли перенаправления ASP.NET MVC 1 с ASP.NET MVC 2? - PullRequest
8 голосов
/ 04 февраля 2010

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

Ответы [ 3 ]

7 голосов
/ 04 февраля 2010

Произошли критические изменения .

Если вы хотите, чтобы проект 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, если установлен флажок «Создать строго типизированное представление», выбран вариант «Просмотр содержимого», отличный от «Пусто», и для типа, который существует, указывается имя типа класса «Просмотр данных» , При указании имени типа либо используйте раскрывающийся список, чтобы выбрать имя типа, либо введите полное имя типа. Для типов, которые не существуют, вы должны установить Просмотр содержимого на «Пусто».

1 голос
/ 13 апреля 2010

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

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

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

1 голос
/ 04 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...