私はKevinObeeの声明に広く同意しますが、コントローラーがSitecoreで2つの異なる役割で使用されていることを思い出しておく価値があると思います。
- ページレベルコントローラー(アイテムルートによって呼び出されます)
- コンポーネントレベルコントローラー(リダリングメカニズムによって呼び出されます)
使用する場合:カスタムコントローラー/デフォルトのSitecoreコントローラー
ページレベルコントローラー
アイテムパスに一致するルートは、デフォルトで。のIndex
アクションを使用しますSitecore.Mvc.Controllers.SitecoreController
。このアクションは、アイテムのレイアウト構成に基づいてViewResultを返します。
この動作を変更する必要がある場合(たとえば、ページ全体に影響を与えるもの)、アイテム(またはアイテムの標準値)に対するカスタムコントローラーとアクションを指定できます。カスタムコントローラーの場合は、独自のコントローラーをロールするか、デフォルトのコントローラーをサブクラス化することができます。
コンポーネントレベルコントローラー
Sitecoreの場合ViewRendering
、特定のコントローラーを必要とせずにRazorビューをレンダリングします(実際に使用されているのはページレベルのコントローラーだと思いますが、Sitecoreがmvc.getModelパイプラインを使用してモデルを取得し、それをにフィードするデフォルトのコントローラーを提供していると想像してください。かみそりのビュー)。
ControllerRendering
ロジックを実行できるカスタムコントローラーを提供し(Kevinの回答を参照)、ビューのモデルを提供します。サブクラス化によるメリットはありませんSitecore.Mvc.Controllers.SitecoreController
。
コントローラはいつ呼び出されますか
ページレベルコントローラー
ページレベルコントローラのアクションは、ルーティングエンジンによって呼び出されます。
コンポーネントレベルコントローラー
ControllerRenderingのアクションは、ページビューのレンダリング時に呼び出されます。
使用のメリット:カスタムコントローラー/デフォルトのSitecoreコントローラー
デフォルトのSitecoreコントローラーに対するカスタムコントローラーの利点は、ロジックを制御できることです。デフォルトのSitecoreコントローラーを使用する利点は、Sitecoreがロジックを提供することです。
ビューにすべてのビジネスロジックを含める必要があります
いいえ(ケビンの答えを参照)