Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

3年前关闭。



Improve this question




我有一个正在构建的ASP.NET MVC项目,当遇到Controller类的实现方式时,我正在浏览一些文档。我对OOP非常熟悉,但是对为什么要以这种方式实现有一些疑问。

我查看了codeproject和一些stack overflow问题,但是找不到我想知道的完全相同的问题。

MVC 5中的
  • 该链的用途是:IController-> ControllerBase-> Controller-> MyController。
  • 如果假定ControllerBase是制作 Controller 所需的最低费用,那么为什么要有Controller类呢?反之亦然,如果Controller是最低实现,那么ControllerBase并不是真正的基类吗?

  • 提前致谢!

    最佳答案

    在MVC 5中,ControllerBase仅充当基本类,主要用于内部使用,并在内部实现IController.Execute(RequestContext requestContext),这是我从Resharper获得的使用列表
    c# - IController vs ControllerBase vs Controller vs MyController?-LMLPHP

    然后,Controller实现过滤器,模型和 View 绑定(bind)的所有功能。因此,要实现MyController,您需要从Controller派生

    您的SO reference已经解释了ControllerBaseController的用途。

    当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/

    10-09 14:57