Pro*_*ofK 8 c# asp.net asp.net-web-api asp.net-core
我正在按照本教程创建ASP.NET Core Web API,并且在添加控制器的部分中,该教程提供了用于替换控制器模板代码的代码。真正引起我注意的一件事是,在模板代码中,我得到了:
TodoController : Controller
Run Code Online (Sandbox Code Playgroud)
然后,在本教程代码中,我应该使用它代替:
[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase
Run Code Online (Sandbox Code Playgroud)
我非常想知道为什么需要从Web API控制器ControllerBase而不是ControllerWeb API控制器中派生。为什么要这样做?
小智 15
来自https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-3.1
不要通过从 Controller 类派生来创建 Web API 控制器。Controller 派生自 ControllerBase 并添加了对视图的支持,因此它用于处理网页,而不是 Web API 请求。
Hen*_*man 11
为什么必须从Web API控制器
ControllerBase而不是ControllerWeb API控制器中派生。
并非绝对必要,仅此而已。将Controller类从派生ControllerBase并只添加了一些需要支持浏览几个成员。
基本上:
public class Controller : ControllerBase
{
public dynamic ViewBag { get; }
public virtual ViewResult View(object model) { }
// more
}
Run Code Online (Sandbox Code Playgroud)
编写API时,ControllerBase可以更好地满足您的要求,但两者都可以使用。
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |