在ASP.net MVC中,为什么控制器可以移动到Controllers文件夹之外

时间:2016-06-17 20:02:16

标签: asp.net-mvc controller asp.net-mvc-5.2

错误地,我在Models文件夹中创建了我的HomeController.cs。 这是我的webapplication的唯一控制器。视图路径为:Views / Home / Index.cshtml

当我运行应用程序时,没有问题,它可以找到控制器。 我还尝试将其移动到像Views / Home / HomeController.cs这样的子文件夹 仍然没问题。

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

1 个答案:

答案 0 :(得分:7)

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

对于一个有趣的小实验,这将产生错误"发现多个类型匹配名为' Home' ..."因为在不同的命名空间中有两个具有相同名称的控制器,MVC不知道要使用哪个控制器。

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

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