我的理解是核心mvc(是MVC 6)控制器如果以#34; Controller" OR 来自Controller
类。网络上至少有一个地方表明了这一点http://www.strathweb.com/2015/04/asp-net-mvc-6-discovers-controllers/
但是在我对一个非常基本的MVC 6 RC1网站的测试中,只有控制器有一个"控制器"后缀。我错过了什么吗?例如,框架发现了以下控制器:
public class HomeController : Controller
{
// GET: /<controller>/
public IActionResult Index()
{
return View();
}
}
但是这个控制器不是:
public class Home: Controller
{
// GET: /<controller>/
public IActionResult Index()
{
return View();
}
}
这是预期的行为吗?是否可以更改,以便在没有&#34; Controller&#34;的情况下可以发现源自Controller
的类。后缀?
答案 0 :(得分:0)
经过进一步的研究,我意识到我错了。或者说我误解了我所看到的内容。
如果实际上控制器名为Home
,如我的示例中所列,并且它继承自Controller
,它将被框架视为Controller
,并且会在route需要一个名为Home
的控制器。
在我的情况下,我实际上想要命名我的控制器HomeCtlr
而不是HomeController
但这不起作用但不是因为框架没有将其识别为控制器。真正的问题是它匹配的路由需要名为HomeCtlr
的控制器而不是名为Home
的控制器。所以最后我意识到我正在考虑这个错误并提出了错误的问题。
所以我问的问题的实际答案是,任何继承自Controller
类的类都将被框架视为控制器。否&#34;控制器&#34;需要后缀。但请注意,您不能添加其他缩写后缀,因为当匹配到该控制器的路由时,它将被视为控制器名称的一部分(当然这非常有意义!)Duh!