Как переместить существующее приложение asp.net в asp.net формат шаблона MVC

Убери свое эхо из выражения следующим образом - <?php echo $columnCasecheck === true ? '-3' : '-4'; ?>

38
задан Ralph Lavelle 4 February 2019 в 23:56
поделиться

3 ответа

Я не думаю, что существует такая вещь как "пошаговая миграция" от ASP.NET WebForms до ASP.NET MVC. Они - два совершенно других шаблона разработки, основывался на той же платформе, но существует (в большинстве случаев) много вещей, которые должны не только быть перемещены, но полностью перепроектированы, если Вы только хотите создать веб-приложение на проекте шаблона MVC вместо шаблона WebForms.

главной причиной для этого является разделение проблем, которое намного более строго в MVC, чем в WebForms. Я в настоящее время работаю (хорошо, я должен быть...) при миграции старого и симпатичного ошибочного проекта хобби от WebForms до MVC, и мой подход в основном был, "смотрят на функциональность, восстанавливают его с нуля". Конечно, у меня были некоторые вспомогательные методы для форматирования вывода и т.д., что я просто включал в свой новый проект, но большая часть основного материала я принял решение только восстановить полностью. Вы были бы удивлены, как мало это берет меня для достижения тех же целей с MVC теперь, который я настроил для приложения WebForms полтора года назад - с использованием Платформы Объекта, jQuery и другого сладкого материала, Вы сможете привести к результатам в течение нескольких часов.

2
ответ дан Tomas Aschan 27 November 2019 в 03:30
поделиться

Это мое пошаговое руководство, на основе шагов, мы взяли в моей компании во время нашего перемещения от классического ASP.NET Веб-формы к ASP.NET MVC. Это не прекрасно, и все еще продолжается, так как мы должны сделать это шаг за шагом из-за размера сайта, но возможно кто-то еще найдет и зарегистрирует улучшенный ответ на основе наших результатов.

Этапы: 1. Планирование - перемещающийся в MVC из Веб-форм в ASP.NET требует некоторого тщательного планирования. Ошибка, которую мы сделали в нашем перемещении, не понимает, что существует, действительно два аспекта к этому этапу планирования, планирования маршрута и планирования модели/контроллера/действия. Не выполнение это вызовет серьезные проблемы позже, когда Вы пытаетесь расширить функциональность своего сайта или поразить более сложные миграции.

Подсказки: - смотрят на Вашу текущую карту сайта и разрабатывают улучшенную карту сайта/структуру каталогов, которая будет использоваться в ASP.NET приложение MVC. Выясните 'язык' для своего веб-сайта, например, поведение по умолчанию ASP.NET, который MVC должен иметь http://sitename/ {контроллер} / {действие} / {идентификатор} поведение, но можно переопределить это, поскольку Вы получаете больше опыта, взламывающего правила маршрутизации.

  • Помнят по умолчанию, что каждый Контроллер будет направлен к через виртуальный подкаталог Вашего приложения, например, , http://sitename/X направил бы к XController (и по умолчанию его Индексный метод), , http://sitename/Y/Get направит к YController's, Получают () метод. Можно изменить это как Вам нравится (действительно мощная маршрутизация), но это выходит за рамки этого ответа.

  • Используя существующую карту сайта, определите, какая папка в структуре MVC каждая текущая .aspx страница должна упасть (конечно, сначала спросите, должна ли она существовать вообще).

  • , Если Сценарии, Изображения и т.д. не хранятся вместе, или на некоторое 'зарезервированное имя' папки в каждом подкаталоге, рассматривают выполнение так теперь, как Вы перепроектируете. Это - поскольку это значительно упростило бы Ваш дизайн, позволив Вам использовать Карту. IgnoreRoute () команда правила маршрутизации в файле Global.aspx.cs для обхода обработки этих папок как маршруты.

В нашем случае мы зеркально отразили реальное расположение подкаталога текущего сайта, где каждый подкаталог стал контроллером, например, Учетная запись / будет иметь AccountController,/X имел бы XController. Все страницы, которые упали внутри, там были заменены действиями в каждом Контроллере. например, http://sitename/profile/about.aspx теперь стал http://sitename/profile/about и отобразился на "о" методе ActionResult в profileController. Это позволяет нам оставаться гибкими путем выполнения частичной миграции одного или двух каталогов (или нескольких файлов в одном каталоге) по серии спринтов, вместо того, чтобы иметь необходимость переместить весь сайт сразу по намного более долгой продолжительности.

  1. Создают новый ASP.NET приложение MVC в Visual Studio и сразу создают правила в файле Global.asax, которые игнорируют правила маршрутизации для папок, которые существуют в текущем сайте.

  2. Копия папки от веб-приложения ASP.NET до ASP.NET Папки приложения MVC. Выполните веб-сайт и удостоверьтесь, что он работает правильно (он не должен как никакие правила маршрутизации использоваться все же).

  3. Выбор подкаталог или подмножество файлов в подкаталоге для миграции.

  4. Для каждой .aspx страницы в этом подкаталоге:

    a. Создайте его Представление сначала. Я склонен использовать веб-браузер, представил версию страницы как мой основной HTML и затем поместил заполнителей в местоположения, которые я знаю, заполнены динамическими данными.

    b. Используя заполнителей для динамических данных, создайте первый проект Модели с помощью простых типов данных. Эта модель начнется простая, но постоянно пересмотрена, поскольку Вы перемещаете больше страниц от исходного сайта, не волнуйтесь, начинает ли это выглядеть немного тяжелым. Если Вы оказываетесь со слишком многими Свойствами в одной Модели для Вашего вкуса или видите, что логическое группируется вне просто Модели определенного подмножества объектов, возможно, это - знак, Модель должна быть пересмотрена, чтобы иметь объект вместо этого с этими простыми типами данных как свойства, но составлена в слое бизнес-логики.

    c. Создайте контроллер, если он еще не был создан и помещал соответствующий метод ActionResult для Действия, Ваше планирование определило, должен направить к этому представлению. Если Вы понимаете что-то, что существует новое действие, которое не отображается на страницу от старого сайта, то создает Представление для контроллера и включает соответствующий//TODO: теги, таким образом, можно отслеживать это для реализации после миграции существующих страниц.

    d. Рассмотрите включение некоторого кода обработки для неизвестных действий также, если у Вас уже нет {*catchall} Правила маршрутизации для этого в Вашем global.asax.cs файле.

    e. Создайте классы конструктора для Модели так, чтобы данный определенные параметры, которые будет иметь Контроллер (передал в как Ваш {идентификатор} или возможно Запрос. Параметр QueryString от URL, или HTTP-заголовок или cookie), Модель будет знать, как обратиться к Вашим существующим занятиям по бизнес-логике и создать себя для рендеринга Представлением.

    f. Перейдите к следующей странице в списке и начните снова с шага a.

  5. Наконец создают правило маршрутизации, которое назовет Ваш новый Контроллер и позволит Действия, которые Вы записали, чтобы быть реализованными. Отладка, отладка, отладка... Как только Вы рады, что все хорошо, удалите существующую папку и файлы, которые Вы переместили от своего основного сайта, а также правила IgnoreRoute в global.asax.cs.

  6. Создают перенаправление любым способом, который Вы предпочитаете, если Вы хотите сохранить старый каталог и имена файлов для непрерывности (например, пользователи уже, возможно, отметили определенные страницы в старом сайте).

Примечание: Если Вы сохраняете точные названия старых подкаталогов в Вашем сайте MVC во время фазы портирования, предпочтительно переместить целый подкаталог за один раз, я понял, потому что, только делая несколько файлов правила маршрутизации, которые необходимо записать, становятся более сложными с тех пор, если существующая папка будет существовать с тем же именем как путь правила маршрутизации, и та папка имеет файл Default.aspx тогда (/foldername/), то примет значение по умолчанию к странице Default.aspx, поскольку это берет президентство по правилам маршрутизации.

Подсказка: Серьезно рассмотрите использование инструмента как RouteDebug для маршрута, отладив, таким образом, можно выяснить странные вещи как вышеупомянутый, или когда у Вас есть увольнение правил многоадресной маршрутизации и порождение неожиданных поведений.

Это - мой первый проект, дайте мне обратную связь, если я пропустил какие-либо шаги или если Вы видите какие-либо дыры в руководстве, и я изменю ответ соответственно.

71
ответ дан Nissan 27 November 2019 в 03:30
поделиться

Мой ответ был бы, "Вы не делаете" :). Если Вы действительно хотите сделать это, можно использовать текущий сайт asp.net как конечную цель, или как требования 'документ'. И возможно можно использовать datalayer в модели, но необходимо будет перепроектировать целый сайт.

, Поскольку Tomas уже указал, это Очень отличается от классического asp.net.

1
ответ дан Morph 27 November 2019 в 03:30
поделиться
Другие вопросы по тегам:

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