Вопрос

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

Это было полезно?

Решение

Там были кардинальные изменения.

Если вы хотите, чтобы проект 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 ПОЛУЧАЕТ вызовы методов action, которые возвращают JsonResult объект должен быть изменен, чтобы вместо него использовать POST .При необходимости вы можете переопределить это поведение, установив новый JsonRequestBehavior свойство JsonResult.Для получения дополнительной информации о потенциальном эксплойте смотрите запись JSON Hijacking в блоге Фила Хаака.

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

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

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

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

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

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

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

“Area” - это теперь зарезервированный ключ значения маршрута

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

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top