从管理区域中的控制器我通过我的视图调用root中的_MasterLayout.cshtml。 “_MasterLayout.cshtml”有这段代码:
@{Html.RenderAction("Top", "Module", new {area=""});}
问题在于它找到多个具有相同名称的控制器,一个在根中,一个在区域Admin中。如何将对该控制器的搜索限制为root?
谢谢!
答案 0 :(得分:1)
您是否已将Region参数添加到GlobalReastries中的RegisterRoutes和AreaRegistrations中的RegisterArea?
喜欢这个
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "Your.Admin.Namespace.Controllers" }
);
}
这在Global.asax
中public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new[] { "Default.Namespace.Of.Controllers" }
);
}
答案 1 :(得分:0)
我遇到了类似的问题..(Fionn的回答将解决它)
但不是仅仅发布为我修复的内容......你可能会从阅读这篇文章中获得更多信息
http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx
关键部分是new[]{"AreasDemoWeb.Controllers"}