2016-05-19 2 views
0

Я пытаюсь создать структуру, которая работает с несколькими проектами MVC. Я хочу добавить каждый проект в качестве области. я не могу использовать AreaRegistration в каждом проекте, поэтому я стараюсь имитировать область в моем коде, как это:Mvc, область регистрации на лету без использования AreaRegistration

foreach (var module in InstalledModules) 
{ 
    routeCollection.MapRoute(
     name: "Default_" + module.AreaName, 
     url: module.AreaName + "/{controller}/{action}/{id}", 
     defaults: new { action = "Index", id = UrlParameter.Optional }, 
     namespaces: new[] { module.Namespace } 
    ); 
} 

InstalledModules список всех модули, которые содержат имя области как Module1 и корневые имена сборки модуля, как MvcProject.Module1 , Вышеуказанный код MapRoute все установленные модули, но он не работает. Для каждого запроса сначала зарегистрированный врезку маршрута и MVC попробуйте найти контроллер в неправильной сборке (местоположении).

Есть ли способ зарегистрировать проектные сборки как область на лету?

Или

Как я могу настроить найти способ согласования маршрута?

ответ

1

Вы указали Controllers в пространстве имен? ваш список InstalledModules должен быть таким:

var InstalledModules = new List<InstalledModule> 
{ 
    new InstalledModule() { AreaName = "Main", Namespace ="MainWeb.Controllers"}, 
    new InstalledModule() { AreaName = "Web1", Namespace = "WebApplication1.Controllers"}, 
    new InstalledModule() { AreaName = "Web2", Namespace = "WebApplication2.Controllers"}, 
}; 
+0

Да, но не работает – Fred

+0

Я пробовал с кодом выше, он направляется в/Main/Home,/Web1/Home,/Web2/Home обычно. Проблема заключается в том, что контроллеры всегда загружают представления/Main (MainWeb - это проект запуска). Я перемещаю виды из Web1/Views, Web2/Views в MainWeb/Views, тогда он работает. – Ken2009

+0

Да, ты прав. Я нашел свою проблему. Коллекция маршрутов всегда содержит маршрут по умолчанию. Когда я удаляю это, все это прекрасно работает. спасибо за Ваш ответ – Fred

0

Я нашел свою проблему. Коллекция маршрутов всегда содержит маршрут по умолчанию. Когда я удаляю это, все это прекрасно работает.

Смежные вопросы