web-dev-qa-db-ja.com

ControllerBase vs Controller for ASP.NET Core Web APIから派生するのはなぜですか?

私はASP.NET Core Web APIを作成するためにこのチュートリアルに従っています。コントローラーの追加に関するセクションでは、コントローラーのテンプレートコードを置き換えるコードが提供されています。本当に私の目を引いたことの1つは、テンプレートコードにあるものです。

TodoController : Controller

次に、代わりに使用することになっているチュートリアルコードで、次のことを見つけます。

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

Web APIコントローラーの場合、ControllerBaseではなくControllerから派生する必要がある理由を知りたいと思っています。なぜこれが行われるのですか?

25
ProfK

web APIコントローラーでControllerBaseではなくControllerから派生する必要がある理由.

それは厳密には必要ではありませんが、要点です。 ControllerクラスはControllerBaseから派生し、ビューをサポートするために必要なメンバーをいくつか追加します。

基本的に:

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

APIを作成すると、ControllerBaseが要件に一致しますが、どちらも機能します。

30
Henk Holterman