MVCエリア
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
エリアを使用すると、コントローラとビューのコレクションをグループ化して、複雑なプロジェクトを細分化および整理できます。これは、MVC開発者の大規模なチームがある場合に便利です。Sitecoreでは、メイン ビュー レイアウトなど、レンダリングごとに領域を使用できます。
エリアは、いくつかの方法で指定できます。
-
レンダリングまたはレイアウト定義アイテム
-
レンダリングパラメータ
-
コードでレンダリングを呼び出す場合、たとえば、次のようになります。 @Html.Sitecore().ViewRendering("Index", new { area = "MyArea" })
-
ルート内(ただし、デフォルト設定では、この機能が依存するPassthroughAreaResolveStrategyは無効になります)
独自のエリア解像度ロジックを追加できます。たとえば、領域を指定する先祖またはフォルダから、またはコンテキスト サイトの属性 (Web.configファイルの/configuration/sitecore/sites/site要素など) から領域を特定できます。
エリアの登録と作成
エリアの登録と作成
エリアを登録するために、SitecoreはInitializeパイプラインのInitializeRoutesプロセッサを使用します。このプロセッサはMVCルートの構成を担当し、RegisterAreas() メソッドを呼び出します。このメソッドは、すべてのアセンブリをスキャンして、System.Web.Mvc.AreaRegistrationオブジェクトとしてインスタンス化できる型を探します。これらのオブジェクトに対して、RegisterAreas() メソッドはSystem.Web.Mvc.AreaRegistrationContextクラスのインスタンスを作成し、それをインスタンスのRegisterArea() メソッドに渡します。
領域を作成するには、Visual Studioでプロジェクトを右クリックし、Addをクリックして、Areaを選択します。
次に、エリアを登録して作成する方法の例を示します。
名前空間をコンテキストに追加する必要があります。Namespacesコレクション。
エリアの決定
エリアの決定
各レンダリング ビューとレイアウト ビューの領域を決定するために、Sitecoreはmvc.renderRenderingパイプラインの早い段階、つまりレンダリングのプロファイリングを初期化した直後にResolveAreaプロセッサを使用します。ResolveAreaプロセッサの唯一のコンストラクタには、IAreaResolveStrategyのインスタンスが必要です。デフォルトの設定では、ChainedAreaResolveStrategyが適用され、1つのインスタンスが値を返すか、何も残らなくなるまで、一連のIAreaResolveStrategyインスタンスが呼び出されます。
IAreaResolveStrategyタイプのデフォルトのシリーズには、次のものが含まれます。
-
RenderingDefinitionAreaResolveStrategy- レンダリング定義アイテムから領域を決定します。この方法を使用するには、コントローラまたはビュー レンダリングの定義項目のDataセクションにあるAreaフィールドに領域を指定します。
-
RenderingParametersAreaResolveStrategy – areaと呼ばれるレンダリングパラメータから領域を決定します。この方法を使用するには、レンダリング パラメータで領域を指定します (例: area = "MyArea".
-
RenderingLayoutAreaResolveStrategy– レイアウト ビューのレイアウト定義項目から領域を決定します この方法を使用するには、MVCビュー レイアウトの定義項目のDataセクションのAreaフィールドに領域を指定します。
/App_Config/Include/Sitecore.Mvc.configファイルでは、/configuration/sitecore/mvc要素が定義されています。この要素は、新しいエリア ロジックが干渉する可能性のあるエリアを除外するようにInitializeRoutesプロセッサに指示します。
拡張性
拡張性
主な拡張性ポイントはIAreaResolveStrategyです。これを使用して、エリアを解決するためのストラテジーを提供します。Sitecoreには、デフォルトでいくつかの戦略が付属しています。
-
ChainedAreaResolveStrategy – IAreaResolveStrategyオブジェクトのリストを歩くことにより、エリア情報を解決します。最初にnull以外の回答で回答した人が勝ちます。リスト内のどのストラテジーもエリアを解決しない場合、Resolveメソッドはnullを返します。
-
RenderingDefinitionAreaResolveStrategy - 現在のレンダリング定義アイテムでAreaフィールドを探してエリアを解決します。
-
RenderingParametersAreaResolveStrategy – パラメータディクショナリでエリアキーを探してエリアを解決します。これは、静的にバインドされたビュー レンダリングに対して、次のように匿名オブジェクト パラメータを追加することで指定できます。
@Html.Sitecore().ViewRendering("Index", new { area = "MyArea" })
-
RenderingLayoutAreaResolveStrategy – 現在のレイアウト定義アイテムのAreaフィールドを探してエリアを解決します。