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

Jon*_*han 2 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的

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


顺便说一句,这是我的路由代码:

主要项目:

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" }
    );
}
Run Code Online (Sandbox Code Playgroud)

地区项目:

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

Jon*_*han 5

阅读这篇文章后发现了这个问题.

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

例如

new string[] { "MyProject.Admin.Controllers" }
Run Code Online (Sandbox Code Playgroud)