Я пытаюсь создать структуру, которая работает с несколькими проектами 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 попробуйте найти контроллер в неправильной сборке (местоположении).
Есть ли способ зарегистрировать проектные сборки как область на лету?
Или
Как я могу настроить найти способ согласования маршрута?
Да, но не работает – Fred
Я пробовал с кодом выше, он направляется в/Main/Home,/Web1/Home,/Web2/Home обычно. Проблема заключается в том, что контроллеры всегда загружают представления/Main (MainWeb - это проект запуска). Я перемещаю виды из Web1/Views, Web2/Views в MainWeb/Views, тогда он работает. – Ken2009
Да, ты прав. Я нашел свою проблему. Коллекция маршрутов всегда содержит маршрут по умолчанию. Когда я удаляю это, все это прекрасно работает. спасибо за Ваш ответ – Fred