понедельник, 11 ноября 2013 г.

Переход с ASP.NET MVC 3 на MVC4 (с VS 2010 на VS2012)

Задача
Перенести проект с MVC 3 на MVC4 (с VS 2010 на VS2012)

Решение
1. Смена студий с Visual Studio 2010 на Visual Studio 2012
Переоткрыл солюшн в новой студии. Студия сама сделала перконвертацию. У меня обошлось без ошибок

2. Смена MVC 3 на MVC 4
Использовал NuGet пакет
Auto Upgrade MVC 3 To MVC 4 version 1.0.1
https://www.nuget.org/packages/UpgradeMvc3ToMvc4

В окне Manage NuGet Packages в поиске ввел "upgrade". Нужный плагин нашелся на первой странице.

3. Правка кода
3.1. Не вызывается событие ExecuteCore
Предыдущие этапы у меня прошли гладко.Но столкнулся с проблемой.
Суть: перестало вызываться событие ExecuteCore
Обращу внимание: у Вас этой проблемы может не возникнуть, если вы не использовали ExecuteCore.
Решение описал в статье:
Проблема перехода с MVC3 на MVC 4 : Не вызывается событие ExecuteCore

3.2. Ошибка компилятора Compiler Error Message: CS1513: } expected
Тут просто компилятор ведет себя по другому.

теперь код вью нужно поправить в соответствии с рекомендациями

Dont : @{if(check){body}}
Recommended : @if(check){body}

Dont : @if(@variable)
Recommended : @if(variable)

Don't : @{int a = @Model.Property }
Recommended : @{int a = Model.Property }


обсуждение
http://stackoverflow.com/questions/12809855/issue-migrating-mvc3-application-to-mvc4-compiler-error-message-cs1513-expe

3.3. Ненужная валидация hidden полей
Стала работать валидация hidden полей. она мне не была нужна
Она была мне не нужна, поэтому отключил её.

$(document).ready(function () { 
    //-- отключаю валидацию скрытых полей в форме
    $.validator.setDefaults({ ignore: 'input:hidden' });
});

тут помогло обсуждение
http://stackoverflow.com/questions/10136342/perform-validation-on-hidden-fields


Ссылки по теме
В этом обсуждении подсмотрел ссылку на пакет Auto Upgrade MVC 3 To MVC 4
http://stackoverflow.com/questions/8853330/converting-a-asp-net-mvc-3-project-to-mvc-4


Upgrading an ASP.NET MVC 3 Project to ASP.NET MVC 4 - этой статьей честно говоря не воспользовался

Комментариев нет:

Отправить комментарий