为什么 ASP.NET Core WebAPI 继承 ControllerBase 而不是 Controller ?
咨询区
Alex Sanséau:
我是 ASP.NET Core Web API 的初学者,我在跟着文档创建 Controller 时,VS模板引擎给我生成了如下 Controller 模板代码,我发现有一个奇怪的地方如下:
public class TodoController : Controller
{
}
但文档中给出的Controller模板是下面这样的。
[Route("api/[controller]")]
[ApiController]
public class TodoController : ControllerBase
{}
对,就是 Controller 和 ControllerBase 的问题,我真的很想知道为啥要用 ControllerBase 而不是 Controller 呢?
回答区
Henk Holterman:
其实两者并没有严格区别,如果往细处说,Controller 是继承于 ControllerBase 的,同时子类添加了一些为 MVC 中的 Views 设计的一些属性和方法,参考如下代码:
public abstract class Controller : ControllerBase{//// Summary:// Gets the dynamic view bag.public dynamic ViewBag { get; }public ViewDataDictionary ViewData { get; set; }//// Summary:// Gets or sets Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary used by// Microsoft.AspNetCore.Mvc.ViewResult.public ITempDataDictionary TempData { get; set; }}
如果你写的是 API 程序,那自然 ControllerBase 更适合需求,虽然两者都可以用。
我记得第一版MVC并没有 ControllerBase,它是后来添加的,所以这取名看起来怪怪的。
Mark:
可以看下官方文档:https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-3.1
你应该就明白,当你想创建MVC项目时可使用 Controller 父类,如果是WebAPI项目可使用 ControllerBase 类。
另一个不同点在于,ControllerBase 是一个抽象类,所以它没有方法实现,自然也就没有Dispose方法了,这里要注意一下。
点评区
两位大佬说的很清楚了,学习了。
为什么 ASP.NET Core WebAPI 继承 ControllerBase 而不是 Controller ?相关推荐
- NET问答: 如何将 ASP.NET Core WebAPI 中抛出的异常封装成对象?
咨询区 rianjs: 在 ASP.NET Core WebAPI 中,我的 Controller 代码如下: [Route("create-license/{licenseKey}&quo ...
- 第十三节:Asp.Net Core WebApi基础总结和请求方式-第十八节
一. 基础总结 1.Restful服务改造 Core下的WebApi默认也是Restful格式服务,即通过请求方式(Get,post,put,delete)来区分请求哪个方法,请求的URL中不需要写方 ...
- ASP.Net Core WebApi几种版本控制对比
ASP.Net Core WebApi几种版本控制对比 原文:ASP.Net Core WebApi几种版本控制对比 一.版本控制的好处: (1)有助于及时推出功能, 而不会破坏现有系统. (2)它还 ...
- 【Vue】Vue与ASP.NET Core WebAPI的集成
SPA单页面应用已经遍地开花,熟知的三大框架,Angular.Vue和React,其中Angular与React均可集成至ASP.NET Core,且提供了相关了中间件.但是Vue没有: " ...
- asp.net core WebAPI实现CRUD
本节用于构建一个简单的WebAPI来管理to-do列表.不会创建用户界面. API Description Request body Response body GET /api/todo Get a ...
- ASP.NET Core WebAPI控制器返回类型的最佳选项
ASP.NET Core WebAPI控制器返回类型的最佳选项 原文:ASP.NET Core WebAPI控制器返回类型的最佳选项 前言 从.NET Core 2.1版开始,到目前为止,控制器操作可 ...
- IIS部署asp.net core webapi
一.需要安装Windows Server Hosting,作用是让IIS有方向代理功能(Asp.Net Core Module负责反向代理工作),将请求转发到Kestrel,Windows serve ...
- 【源码解读】Vue与ASP.NET Core WebAPI的集成
在前面博文[Vue]Vue 与 ASP.NET Core WebAPI 的集成中,介绍了集成原理:在中间件管道中注册SPA终端中间件,整个注册过程中,终端中间件会调用node,执行npm start命 ...
- ASP.NET CORE WEBAPI文件下载
最近要使用ASP.NET CORE WEBAPI用来下载文件,使用的.NET CORE 3.1.考虑如下场景: 文件是程序生成的. 文件应该能兼容各种格式. 浏览器可以感知进行下载. 准备 经过简单的 ...
最新文章
- 在 Java 中高效使用锁的技巧--转载
- 数字图像处理之归一化方法
- C++ Primer 5th笔记(chap 15 OOP)访问控制与继承
- 白嫖我常用的 11 个超火的前端必备在线工具,终于有时间上班摸鱼了
- 导演李大为婚礼全过程(二)
- Java进阶学习路线
- 转帖:对linux中半增加半连接数量和防止服务器被dos***
- 特斯拉CEO马斯克再次动员员工 加快季度末交付
- 张朝阳直播做饭上演“吃播”,“Charles的好物分享”探索带货形式新边界
- sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
- nginx+tocmat ip_hash做负载均衡时,一台tomcat宕机时没有转发问题
- android 删除wifi文件,如何删除无线配置文件
- INADDR_ANY的确切含义
- Data URI scheme
- 科创板设立 币圈走向几何?
- 统计学怎么求加权指数_统计学课程作业(统计指数)
- 【建模应用】PLS偏最小二乘回归原理与应用
- 【BSP视频教程】STM32H7视频教程第4期:从启动到运行过程全解析,电源域,复位,时钟,软硬件启动流程到堆栈,map和htm文件分析(2022-01-26)
- 【智能控制】linkboy带你花式开灯
- The connection to adb is down, and a severe error has occured.问题解决