我有一个我正在构建的ASP.NET MVC项目,当我遇到Controller类的实现方式时,我正在查看一些文档。我对OOP非常熟悉,但对于为什么以这种方式实现它有一些问题。
我查看了codeproject和一些stack overflow个问题,但找不到我想知道的相同问题。
提前致谢!
答案 0 :(得分:41)
在MVC 5中,ControllerBase
只是像基本类一样,主要用于内部使用,并在内部实现IController.Execute(RequestContext requestContext)
,这里是我从Resharper获得的用法列表
Controller
然后实现过滤器,模型和视图绑定的所有功能。因此,要实施MyController
,您需要从Controller
您的搜索引擎reference已经解释了ControllerBase
和Controller
的目的。
请查看GitHub for ASP.NET Core 1.1.1中Controller和ControllerBase类的源代码。在每个类的<summary>
标记中,他们说:
MVC控制器的基类具有视图支持。
MVC控制器的基类没有视图支持。
您可能会问到何时使用ControllerBase。我的直觉告诉我,如果我只使用ASP.NET MVC进行WebAPI并且不需要View
功能,您可以直接从MyController
派生ControllerBase
。大多数情况下,即使您不使用Controller
并且仅为WebAPI返回字符串或JSON,您也可以从View
派生。 Controller.cs
允许您返回View
并利用自动绑定。