咨询区

  • 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 ?相关推荐

  1. NET问答: 如何将 ASP.NET Core WebAPI 中抛出的异常封装成对象?

    咨询区 rianjs: 在 ASP.NET Core WebAPI 中,我的 Controller 代码如下: [Route("create-license/{licenseKey}&quo ...

  2. 第十三节:Asp.Net Core WebApi基础总结和请求方式-第十八节

    一. 基础总结 1.Restful服务改造 Core下的WebApi默认也是Restful格式服务,即通过请求方式(Get,post,put,delete)来区分请求哪个方法,请求的URL中不需要写方 ...

  3. ASP.Net Core WebApi几种版本控制对比

    ASP.Net Core WebApi几种版本控制对比 原文:ASP.Net Core WebApi几种版本控制对比 一.版本控制的好处: (1)有助于及时推出功能, 而不会破坏现有系统. (2)它还 ...

  4. 【Vue】Vue与ASP.NET Core WebAPI的集成

    SPA单页面应用已经遍地开花,熟知的三大框架,Angular.Vue和React,其中Angular与React均可集成至ASP.NET Core,且提供了相关了中间件.但是Vue没有: " ...

  5. asp.net core WebAPI实现CRUD

    本节用于构建一个简单的WebAPI来管理to-do列表.不会创建用户界面. API Description Request body Response body GET /api/todo Get a ...

  6. ASP.NET Core WebAPI控制器返回类型的最佳选项

    ASP.NET Core WebAPI控制器返回类型的最佳选项 原文:ASP.NET Core WebAPI控制器返回类型的最佳选项 前言 从.NET Core 2.1版开始,到目前为止,控制器操作可 ...

  7. IIS部署asp.net core webapi

    一.需要安装Windows Server Hosting,作用是让IIS有方向代理功能(Asp.Net Core Module负责反向代理工作),将请求转发到Kestrel,Windows serve ...

  8. 【源码解读】Vue与ASP.NET Core WebAPI的集成

    在前面博文[Vue]Vue 与 ASP.NET Core WebAPI 的集成中,介绍了集成原理:在中间件管道中注册SPA终端中间件,整个注册过程中,终端中间件会调用node,执行npm start命 ...

  9. ASP.NET CORE WEBAPI文件下载

    最近要使用ASP.NET CORE WEBAPI用来下载文件,使用的.NET CORE 3.1.考虑如下场景: 文件是程序生成的. 文件应该能兼容各种格式. 浏览器可以感知进行下载. 准备 经过简单的 ...

最新文章

  1. 在 Java 中高效使用锁的技巧--转载
  2. 数字图像处理之归一化方法
  3. C++ Primer 5th笔记(chap 15 OOP)访问控制与继承
  4. 白嫖我常用的 11 个超火的前端必备在线工具,终于有时间上班摸鱼了
  5. 导演李大为婚礼全过程(二)
  6. Java进阶学习路线
  7. 转帖:对linux中半增加半连接数量和防止服务器被dos***
  8. 特斯拉CEO马斯克再次动员员工 加快季度末交付
  9. 张朝阳直播做饭上演“吃播”,“Charles的好物分享”探索带货形式新边界
  10. sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
  11. nginx+tocmat ip_hash做负载均衡时,一台tomcat宕机时没有转发问题
  12. android 删除wifi文件,如何删除无线配置文件
  13. INADDR_ANY的确切含义
  14. Data URI scheme
  15. 科创板设立 币圈走向几何?
  16. 统计学怎么求加权指数_统计学课程作业(统计指数)
  17. 【建模应用】PLS偏最小二乘回归原理与应用
  18. 【BSP视频教程】STM32H7视频教程第4期:从启动到运行过程全解析,电源域,复位,时钟,软硬件启动流程到堆栈,map和htm文件分析(2022-01-26)
  19. 【智能控制】linkboy带你花式开灯
  20. The connection to adb is down, and a severe error has occured.问题解决

热门文章

  1. Exchange server 2007 出现“0x8004010F”错误的解决办法
  2. 我需要别人承认才快乐吗?
  3. Delphi对话框初始地址InitialDir
  4. 前端工程构建工具——Yeoman
  5. 2016福州大学软件工程第四次团队作业-系统设计成绩汇总
  6. Linux Swap分区设定
  7. 数字图像处理技术在TWaver可视化中的应用
  8. JS获取本周、本季度、本月、上月的开端日期、停止日期
  9. 浏览器要是能这么做就好了
  10. 算法的力量(李开复)