想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
Improve this question
我有一个正在构建的ASP.NET MVC项目,当遇到Controller类的实现方式时,我正在浏览一些文档。我对OOP非常熟悉,但是对为什么要以这种方式实现有一些疑问。
我查看了codeproject和一些stack overflow问题,但是找不到我想知道的完全相同的问题。
MVC 5中的
提前致谢!
最佳答案
在MVC 5中,ControllerBase
仅充当基本类,主要用于内部使用,并在内部实现IController.Execute(RequestContext requestContext)
,这是我从Resharper获得的使用列表
然后,Controller
实现过滤器,模型和 View 绑定(bind)的所有功能。因此,要实现MyController
,您需要从Controller
派生
您的SO reference已经解释了ControllerBase
和Controller
的用途。
当ASP.NET团队将MVC,WebAPI整合到一个框架中时,在MVC 6(后来称为ASP.NET MVC核心)中看起来更加有趣。
请查看ASP.NET Core 1.1.1中GitHub中Controller和ControllerBase类的源代码。在每个类的<summary>
标记中,他们说:
Controler.cs
ControllerBase.cs
您可能会询问何时使用ControllerBase。我的直觉告诉我,如果我仅将ASP.NET MVC用于WebAPI,并且不需要View
功能,则可以直接从MyController
派生ControllerBase
。在大多数情况下,即使您不使用Controller
,而只返回WebAPI的字符串或JSON,也可以从View
派生。 Controller.cs
允许您返回View
并利用自动绑定(bind)功能。
关于c# - IController vs ControllerBase vs Controller vs MyController? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45291281/