私はASP.NET Core Web APIを作成するためにこのチュートリアルに従っています。コントローラーの追加に関するセクションでは、コントローラーのテンプレートコードを置き換えるコードが提供されています。本当に私の目を引いたことの1つは、テンプレートコードにあるものです。
TodoController : Controller
次に、代わりに使用することになっているチュートリアルコードで、次のことを見つけます。
[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase
Web APIコントローラーの場合、ControllerBase
ではなくController
から派生する必要がある理由を知りたいと思っています。なぜこれが行われるのですか?
web APIコントローラーで
ControllerBase
ではなくController
から派生する必要がある理由.
それは厳密には必要ではありませんが、要点です。 Controller
クラスはControllerBase
から派生し、ビューをサポートするために必要なメンバーをいくつか追加します。
基本的に:
public class Controller : ControllerBase
{
public dynamic ViewBag { get; }
public virtual ViewResult View(object model) { }
// more
}
APIを作成すると、ControllerBaseが要件に一致しますが、どちらも機能します。