ASP.NET MVC3 Использование областей - PullRequest
2 голосов
/ 12 октября 2011

У меня возникли проблемы с настройкой двух областей в моем проекте. Я создал обе области, щелкнув правой кнопкой мыши свой проект -> Добавить -> Область с помощью VS 2010 Professional,

Код, сгенерированный в файлах * AreaRegistration.cs, в точности соответствует моим ожиданиям.

Обе мои области имеют несколько контроллеров.

Я проверил свой файл global.asax.cs, и он содержит то, что я ожидал, внизу есть следующее:

* * 1010
// Generated code
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);

Когда я изменяю сгенерированную по умолчанию информацию о маршрутизации, я могу заставить ее работать для Single controller:

context.MapRoute(
    "CommunityCourses_default",
    "CommunityCourses/{controller}/{action}/{id}",
    new {controller="NameOfController", action = "Index", id = UrlParameter.Optional }
);

controller = "NameOfController" - это то, что я пытался добавить к сгенерированному коду, но он работает только для одного контроллера.

Редактировать: Я переименовал пространство имен моих файлов, чтобы использовать PROJECTNAME.AREANAME в области, это вызывает проблемы? Я думал, что это упростит мой импорт без нарушения соглашения.

Чего мне не хватает? Я заметил много проблем, связанных с областями на SO, и безуспешно пытался следить за ответами. Эта проблема беспокоила меня в течение большей части дня, любая помощь будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Если вы переместили файлы из папки Controllers или папки VIews в корневом каталоге проекта в папки Controllers или View, содержащиеся в папке {AreaName}, то для всех этих перемещенных файлов необходимо изменить пространства имен с {ProjectName}.{*etCetera} на

{ProjectName}.Areas.{AreaName}.{*etCetera}
1 голос
/ 13 октября 2011

Route Debugger showing the routing is incorrect

Оказалось, что неправильно было то, что порядок или маршрутизация были неправильными, сначала была обработана {controller} / {action} / {id}, которая разбивала мои области.Перемещение

AreaRegistration.RegisterAllAreas();

в начало моего application_start решило мою проблему.

http://haacked.com/archive/2011/04/13/routedebugger-2.aspx Ссылка на инструмент, который я использовал для поиска проблемы, к сожалению, текущая версияинструмент не работает на страницах 404 по умолчанию, поэтому мне также пришлось создать собственную страницу 404, чтобы она работала.

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