MVC,只搜索root中的控制器

时间:2011-03-05 13:52:14

标签: asp.net-mvc asp.net-mvc-3

从管理区域中的控制器我通过我的视图调用root中的_MasterLayout.cshtml。 “_MasterLayout.cshtml”有这段代码:

@{Html.RenderAction("Top", "Module", new {area=""});}

问题在于它找到多个具有相同名称的控制器,一个在根中,一个在区域Admin中。如何将对该控制器的搜索限制为root?

谢谢!

2 个答案:

答案 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"}