Is ApiController deprecated in .NET Core

后端 未结 4 736
-上瘾入骨i
-上瘾入骨i 2021-01-31 01:04

Is it true that \"ApiController will get deprecated in .NET Core\"? Asking since I\'m planning to use it in new projects.

4条回答
  •  眼角桃花
    2021-01-31 01:58

    Update ASP.NET Core 2.1

    Since ASP.NET Core 2.1 a new set of types is available to create Web API controllers. You can annotate your controllers with the [ApiController] attribute which enables a few new features such as automatic model state validation and binding source parameter inference. See the docs for more information: https://docs.microsoft.com/en-us/aspnet/core/web-api/index?view=aspnetcore-2.1#annotate-class-with-apicontrollerattribute.


    There is indeed no particular ApiController class anymore since MVC and WebAPI have been merged in ASP.NET Core. However, the Controller class of MVC brings in a bunch of features you probably won't need when developing just a Web API, such as a views and model binding.

    You've got two options if you want something different:

    Use the ControllerBase class in the Microsoft.AspNetCore.Mvc.Core package.

    Or

    Create your ApiController base class. The key here is to add the [ActionContext] attribute which injects the current ActionContext instance into the property:

    [Controller]
    public abstract class ApiController
    {
        [ActionContext]
        public ActionContext ActionContext { get; set; }
    }
    

    Also, add the [Controller] attribute to the class to mark it as a controller for the MVC controller discovery.

    See more details in my “Web API in MVC 6” blogpost.

提交回复
热议问题