Области над несколькими проектами - представления не найдены в дочерних проектах

Я следил за этим руководством от MSDN о "Создание Приложение ASP.NET MVC Areas с использованием нескольких проектов ». Поскольку ASP.NET MVC 2.0 - это всего лишь предварительная версия, можно предположить, что в ней есть некоторые ошибки.

Моя проблема в том, что это просто не работает! По крайней мере, не так, как предполагалось. После настройки и нажатия F5 казалось, что это сработает, здорово! ПИИП. Неправильный.

Он не находит представления в дочернем проекте! Потому что в моем случае он пытается искать в ~/Views, который, конечно, находится в родительском!

При отладке я вижу, что он запускает контроллер внутри моего дочернего проекта, но при использовании return View(); в этом действии он просматривает папки родительского представления.

Я спрашиваю, ошибка или особенность?

Пробовал это как в Vs2009, так и в Vs2010 с Framework 3.5 и 4.0.


person Filip Ekberg    schedule 03.12.2009    source источник


Ответы (2)


Я поместил в Google "области с несколькими проектами" и наткнулся на это сообщение: http://forums.asp.net/p/1494640/3540105.aspx. Обратите внимание на ответ Фила Хаака.

Похоже, что определение ваших представлений в родительском проекте «работает так, как задумано» из-за этой записи в сообщении MSDN: Now that all the code is in place, the final step is to customize the build process for each area project. This customization causes some child-area files, such as the views, to be copied to the main project before the application is built.

«Проблема» с сообщением в том, что он был определен для бета-версии, где этот этап сборки был легко доступен. RC +, вы должны указать на сборку Futures и назначить этап сборки несколько иначе, если это выбранный вами путь.

Если вам не нравится направление, которое вас подталкивает, то упомянутая Филом часть MvcContrib о переносимых областях почти так же хороша, как и альтернатива.

person w0rd-driven    schedule 04.01.2010

Я пережил ту же боль, что и ты. Вот что я сделал.

  1. Убедитесь, что я использую MVC 2 RC (удалите бета-версию 2, установите RC).
  2. Воссоздал проект с нуля.
  3. Нет необходимости редактировать файлы csproj, создавать routes.cs и редактировать global.ascx.cs, просто щелкните правой кнопкой мыши по основному проекту, чтобы открыть контекстное меню. В пункте меню «Добавить» вы можете создать новую область.
  4. Представления должны быть в основном проекте, или вы можете использовать информацию в этом сообщении http://forums.asp.net/p/1494640/3540105.aspx, что я планирую сделать так, чтобы представления были в каждой области.

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

person 37Stars    schedule 29.12.2009
comment
Он не поддерживает многопроектные области, тогда это не решение моей проблемы, не так ли? - person Filip Ekberg; 30.12.2009
comment
Кажется, я сказал, что это не решение для нескольких проектов, но это решение проблемы. Возможно, это будет интересно узнать еще одному человеку, поскольку поддержка многопроектных областей была удалена из релиз-кандидата. - person 37Stars; 30.12.2009
comment
Если вы снова прочитаете мой вопрос, то увидите, что я уже рассмотрел ту часть, которая вам нужна в основном проекте. - person Filip Ekberg; 02.01.2010