在 ASP.net MVC 中,为什么可以将控制器移出 Controllers 文件夹

In ASP.net MVC, why the controller can be moved outside of the Controllers folder

我错误地在文件夹模型中创建了我的 HomeController.cs。 这是我的网络应用程序的唯一控制器。查看路径为:Views/Home/Index.cshtml

当我运行应用时,没有问题,可以找到控制器。 我也尝试将其移动到 Views/Home/HomeController.cs 之类的子文件夹 还是没问题。

我找不到可以告诉应用程序控制器在哪里的路由或配置,所以我想知道它是如何工作的...

当尝试将路由与控制器匹配时,MVC 会查找从 Controller 继承的任何内容,实际上控制器驻留的位置或控制器所在的名称空间并不重要。

对于一个有趣的小实验,这将产生错误 "Multiple types were found that match the controller named 'Home'...",因为您有两个控制器在不同的命名空间中具有相同的名称,而 MVC 不知道该使用哪个。

namespace Something
{
    public class HomeController : Controller
    {
        public ActionResult Index()...
    }  
}

namespace OrOther
{
    public class HomeController : Controller
    {
        public ActionResult Index()...
    }  
}