Я пытаюсь использовать Html.RenderAction в строго типизированном виде из библиотеки MVC Futures
У меня есть действие Navigation на моем основном HomeController (area = ""), которое я пытаюсь выполнитьзвонок с моего Site.Master
<% Html.RenderAction<HomeController>(x=>x.Navigation()); %>
Это прекрасно работало до тех пор, пока я не добавил еще один HomeController в мою переносимую область администратора.Затем я обнаружил следующую ошибку:
Найдено несколько типов, соответствующих контроллеру с именем «Home».Это может произойти, если маршрут, обслуживающий этот запрос, не указывает пространства имен для поиска контроллера, соответствующего запросу.В этом случае зарегистрируйте этот маршрут, вызвав перегрузку метода «MapRoute», который принимает параметр «пространства имен».
В запросе «Home» обнаружены следующие подходящие контроллеры: Areas.Admin.Controllers.HomeController Web.Controllers.HomeController
Мне удалось решить эту проблему с помощью следующего не типизированного mvccontrib метода RenderAction.Я бы предпочел, чтобы этот метод не был строго типизирован на странице, есть ли способ заставить методы mvccontrib принимать область, или чтобы они знали, как генерировать область на основе маршрутов или пространства имен указанного контроллера.
<% Html.RenderAction("Navigation", "Home", new { area = "" }); %>
Я уже добавил в свой файл global.asax.cs поддержку нескольких контроллеров с областью по умолчанию, как показано ниже, и я также убедился, что это правильное пространство имен для моих контроллеров.
_routeCollection.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "Web.Controllers" });