视频网站做app还是h5,wordpress文章缩略图,查看网站有没有做301,大型网咨询区 Alex Sansau#xff1a;我是 ASP.NET Core Web API 的初学者#xff0c;我在跟着文档创建 Controller 时#xff0c;VS模板引擎给我生成了如下 Controller 模板代码#xff0c;我发现有一个奇怪的地方如下#xff1a;public class TodoController : 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/?viewaspnetcore-3.1你应该就明白当你想创建MVC项目时可使用 Controller 父类如果是WebAPI项目可使用 ControllerBase 类。另一个不同点在于ControllerBase 是一个抽象类所以它没有方法实现自然也就没有Dispose方法了这里要注意一下。点评区 两位大佬说的很清楚了学习了。