即使在不同的区域,控制器名称也必须是唯一的吗?

时间:2009-08-14 04:21:15

标签: asp.net-mvc

我有一个ASP.NET MVC网站和一个名为“Admin”的区域项目。

到目前为止,路由工作正常,但似乎我不能在每个项目中拥有2个具有相同名称的控制器。

我认为以下网址都可以正常使用:

  

http://website.com/Home/Index

     

http://website.com/Admin/Home/Index

但事实证明,在访问其中时我收到以下错误:

  

控制器名称“Home”在以下类型之间不明确:

     

MyProject.Website.Controllers.HomeController

     

MyProject.Admin.Controllers。 HomeController的

这是正常的,还是我的设置有问题?


BTW,这是我的路由代码:

主要项目:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    Admin.Routes.RegisterRoutes(routes);

    routes.MapAreaRoute(
        "Main",
        "default_route",
        "{controller}/{action}/{URLName}",
        new { controller = "Home", action = "Index", URLName = "" },
        new string[] { "MyProject.Website" }
    );
}

区域项目:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapAreaRoute(
        "Admin",
        "Admin_Default",
        "Admin/{controller}/{action}",
        new { controller = "Home", action = "Index" },
        new string[] { "MyProject.Admin" }
    );
}

1 个答案:

答案 0 :(得分:5)

阅读this post后发现问题。

我应该在第5个参数中指定'Controllers'命名空间,而不仅仅是项目命名空间。

E.g。

new string[] { "MyProject.Admin.Controllers" }