为什么从ControllerBase vs Controller for ASP.NET Core Web API派生?

问题描述 投票:6回答:1

我正在按照本教程创建ASP.NET Core Web API,在添加控制器的部分中,本教程提供了替换控制器模板代码的代码。真正引起我注意的一件事是,在模板代码中,我得到:

TodoController : Controller

然后在教程代码中我应该使用而不是那个,我发现:

[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase

我很有兴趣知道为什么有必要从ControllerBase而不是Controller派生为Web API控制器。为什么这样做?

c# asp.net asp.net-web-api asp.net-core
1个回答
8
投票

为什么有必要从ControllerBase而不是Controller派生为Web API控制器。

这不是严格必要的,更重要的是。 Controller类派生自ControllerBase,只添加了一些支持Views所需的成员。

基本上:

public class Controller : ControllerBase
{
    public dynamic ViewBag { get; }
    public virtual ViewResult View(object model) { }
    // more
}

当您编写API时,ControllerBase会更好地满足您的要求,但两者都可以。

© www.soinside.com 2019 - 2024. All rights reserved.