Зачем наследовать ControllerBase от Controller для ASP.NET Core Web API? - PullRequest
6 голосов
/ 19 марта 2019

Я следую этому руководству по созданию ASP.NET Core Web API, и в разделе, посвященном добавлению контроллера, в учебнике приведен код для замены кода шаблона для контроллера.Одна вещь, которая действительно привлекла мое внимание, это то, что в коде шаблона я получаю:

TodoController : Controller

Затем в коде учебника, который я должен использовать вместо этого, я нахожу:

[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase

Мне очень интересно знать, почему необходимо выводить из ControllerBase вместо Controller для контроллера Web API.Почему это сделано?

1 Ответ

8 голосов
/ 19 марта 2019

, почему необходимо выводить из ControllerBase вместо Controller для контроллера Web API.

Это не обязательно, просто ближе к делу.Класс Controller является производным от ControllerBase и добавляет только несколько членов, необходимых для поддержки представлений.

В основном:

public class Controller : ControllerBase
{
    public dynamic ViewBag { get; }
    public virtual ViewResult View(object model) { }
    // more
}

Когда вы пишете API, ControllerBase лучше соответствует вашим требованиям, но оба будут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...