[解決済み] ASP.NET Core Web APIでControllerBaseから派生する理由とControllerから派生する理由とは?
疑問点
ASP.NET Core Web APIを作成するためにこのチュートリアルに沿っています。コントローラを追加するセクションで、チュートリアルはコントローラ用のテンプレートコードを置き換えるコードを提供します。私が本当に目を引いたことの一つは、テンプレートコードで、私は取得します。
TodoController : Controller
そして、チュートリアルのコードでは、その代わりに使うことになっている、私は見つけます。
[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase
からの導出がなぜ必要なのか、非常に興味があります。
ControllerBase
ではなく
Controller
を使用します。なぜこのようなことをするのでしょうか?
どのように解決するのですか?
<ブロッククオート
からの導出が必要な理由
ControllerBase
ではなく
Controller
を Web API コントローラのために使用します。
厳密には不要ですが、よりポイントになることだけは確かです。その
Controller
から派生したクラスです。
ControllerBase
を継承し、Views をサポートするためにのみ必要ないくつかのメンバを追加しています。
基本的には
public abstract class Controller : ControllerBase
{
public dynamic ViewBag { get; }
public virtual ViewResult View(object model) { }
// more View support stuff
}
APIを書く場合は、ControllerBaseの方が要件にマッチしますが、どちらも動作します。
のあたりで ドキュメント を参照してください (強調)。
Controller クラスから派生して Web API コントローラを作らないようにしましょう。Controller は ControllerBase から派生してビューのサポートを追加したものであり、Web API のリクエストではなく Web ページを処理するためのものです。このルールには例外があります。 もし同じコントローラをビューとウェブ API の両方に使用する場合は、 Controller .
最初のMVCの反復ではControllerBaseは存在せず、後から挿入されたように記憶しています。そのため、少し奇妙な名前付けと継承の構造になっています。
関連
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] ASP.NET MVCにおけるApiControllerとControllerの相違点
-
[解決済み] 既存のASP.NET MVC 4 WebアプリケーションのプロジェクトにWeb APIを追加するにはどうすればよいですか?
-
[解決済み] ASP.NET Core Web APIの例外処理
-
[解決済み】Web Api コントローラから http ステータスコードを返す。
-
[解決済み] ASP.NET Web APIで複数のGETメソッドを持つ単一のコントローラ
-
[解決済み] ASP.NET Core Web API 認証
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました