确实,在“.NET Core”中将会使用“ApiController
”吗?我真的需要这方面的专业见解。因为我打算在新项目中使用它。在.NET Core中是不赞成使用ApiController
回答
因为MVC和WebAPI已经在ASP.NET Core中合并了,所以确实对于特定的ApiController
类。但是,MVC的Controller
类引入了一些功能,您在开发Web API时可能不需要这些功能,例如视图和模型绑定。
你有两个选择,如果你想要的东西不同:
使用ControllerBase
类的Microsoft.AspNetCore.Mvc.Core包。
或者
创建ApiController
基类。这里的关键是添加[ActionContext]
属性中注入当前ActionContext
实例到属性:
[Controller]
public abstract class ApiController
{
[ActionContext]
public ActionContext ActionContext { get; set; }
}
此外,[Controller]
属性添加到类将其标记为为MVC控制器发现的控制器。
在我的“Web API in MVC 6” blogpost中查看更多详情。
它真的有帮助... – Viji
这实际上正是WebApi兼容性的'ApiController' Shim Package ,它只是绑定更多的属性,但它们都基于ControlerContext,它通过属性https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/ApiController.cs#L36-L43注入。与更多的兼容性东西(这是完全可选的),如路线注册https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/Routing/WebApiCompatShimRouteBuilderExtensions.cs#L13或WebApi2 esque属性 – Tseng
在ASP.NET核心使用从ASP.NET MVC和ASP.NET WepAPI中已知的术语和概念。但基本上它是一个全新的框架。因此,我们可以简单地忘记几个概念或基类。
ASP.NET MVC和ASP.NET WebApi是两个共存但不同的框架,因此必须使用ApiController
作为基类来指定控制器作为WebApi控制器。
在ASP.NET Core中,这根本就不再需要。 Controller
基类可用于从Razor Views或JSON返回HTML的操作(输出格式化程序XML和其他格式也可以)。你甚至不需要基类Controller
。甚至可以使用“Plain Old C#Object”作为控制器而不需要继承。 这是一个演示控制器的概要示例,即使ApiController不在那里,将数据传递到客户端的结构方法也是类似的。
public class DemoController : Controller
{
public async Task<IActionResult> Action()
{
var model = await _someService.GetPreciousData();
return Ok(model);
}
}
感谢您的洞察 – Viji
正如其他人提到的,ASP.NET Core是一个完全新的webstack,它与旧的ASP.NET MVC webstack不兼容。这明确体现在它的名称和版本控制中!
ASP.NET Core和ASP.NET Core MVC的版本为1.0.0,使得这种不兼容性非常明显。
ASP.NET Core将MVC和WebApi合并成一个刚刚调用的Api。
这里就是你可能一直在寻找的东西:
如果您从以前的ASP.NET MVC或ASP.NET的WebAPI应用程序迁移,则可能要导入的Microsoft.AspNetCore.Mvc.WebApiCompatShim
包,它提供了一些兼容性类型,使迁移更容易从以前的版本。其中包括ApiController
类以及在新webstack Api中删除的某些属性。
但是,请注意,这只是帮助您迁移现有应用程序。当你创建一个新的应用程序时,你不应该使用这个兼容性shim,而只是使用新的东西。
感谢您的迁移提示 – Viji
- 1. 赞成&.NET 3.5中
- 2. clEnqueTask在openCL 2.0中不赞成使用
- 3. 不赞成Typedef
- 4. 不赞成
- 5. 在Startup.cs中生成角色在.NET Core 2.0中不起作用
- 6. C++ 17中不赞成使用std :: result_of的原因是什么?
- 7. .NET Core 2.0成就
- 8. FusionTables不赞成使用数字表ID
- 9. 使用不赞成的方法
- 10. Flex 4.5中不赞成mx.containers.HDividedBox?
- 11. “的setText:不赞成使用”警告
- 12. 如何在Asp Net Core RC1 MVC中添加带有令牌认证的“ApiController”MVC
- 13. 如何在.net core 1.0中使用mvc路由URL合成?
- 14. 如何在.NET Core中使用OpenAL?
- 15. 无法在Dot Net Core中使用System.Management.dll
- 16. 在.NET Core 1.0中使用resx资源
- 17. 在.net Core中引用.net 4.6.1库
- 18. 这是不赞成使用的编码方式吗? ASP.Net MVC
- 19. 在.NET 4.5.2控制台应用程序中使用.NET Core库
- 20. 如何使用JSON .NET CORE
- 21. 不能赞成测试
- 22. 不赞成的hibernate getSession().connection()
- 23. .NET Core(ASP MVC)在生成后运行
- 24. 在.NET CORE
- 25. .Net Core是否会生成与标准.Net相同的IL?
- 26. 如何引用.NET Core 1.1 DLL - 不是项目 - 从.NET 4.6.1
- 27. 在WebJob中使用.NET Core 2.0库定位.NET Framework 4.7
- 28. 如何在ApiController中使用POST
- 29. 在MVC 4异步ApiController中使用Task.Factory.StartNew?
- 30. 使用表示和不赞成使用的标记重置CSS
简答:是的。不是那么简短的答案:Asp.Net MVC和Asp.Net Web API被合并为一个在asp.net-core中的代码库。所以它们都从'Controller'继承,并且都可以返回'IActionResult'的实现。无论是MVC的“视图”还是Web API的Json。您可以根据需要配置核心。 https://docs.asp.net/en/latest/intro.html – Nkosi