我正在按照本教程创建ASP.NET Core Web API,在添加控制器的部分中,本教程提供了替换控制器模板代码的代码。真正引起我注意的一件事是,在模板代码中,我得到:
TodoController : Controller
然后在教程代码中我应该使用而不是那个,我发现:
[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase
我很有兴趣知道为什么有必要从ControllerBase
而不是Controller
派生为Web API控制器。为什么这样做?
为什么有必要从
ControllerBase
而不是Controller
派生为Web API控制器。
这不是严格必要的,更重要的是。 Controller
类派生自ControllerBase
,只添加了一些支持Views所需的成员。
基本上:
public class Controller : ControllerBase
{
public dynamic ViewBag { get; }
public virtual ViewResult View(object model) { }
// more
}
当您编写API时,ControllerBase会更好地满足您的要求,但两者都可以。