1. MVCの

MVCとパイプライン

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

このトピックでは、Sitecore MVCが使用するパイプラインとプロセッサについて説明します。

MVC固有のプロセッサ

一部の標準Sitecoreパイプラインには、Sitecore MVCに特化して使用されるプロセッサがあります。次の表に、それらが何であるかを示します。

Pipeline

Processors

初期化する

  • InitializeGlobalFilters – このプロセッサは、MVCグローバル フィルターに次のフックを設定します。

    • ActionExecuting

    • ActionExecuted

    • ResultExecuting

    • ResultExecuted

    • Exception

  • InitializeControllerFactory – このプロセッサは、カスタム コントローラー ファクトリ (IControllerFactory) をMVCランタイムにインストールして、MVC要求の処理とコントローラーの作成をより詳細に制御できるようにします。

  • InitializeRoutes – デフォルトのSitecoreルート ハンドラー (フォールスルー: {*pathInfo}) を設定し、既存のルートをSitecore固有のルート キーで装飾します。

HttpBeginRequest (英語)

  • TransferRoutedRequest: このプロセッサは、LayoutResolverプロセッサの前に配置されます。要求がMVCルート テーブル内のルートと一致する場合、パイプラインは実行を停止し、MVC要求ハンドラーが引き継ぎます。カスタムルートのみが考慮されます。Sitecoreフォールスルー ルート ({*pathInfo}) はプロセッサによって無視されます (それ以外の場合、すべての要求が一致してMVCによって処理されます)。

  • TransferMvcLayout: このプロセッサは、LayoutResolverプロセッサの後に配置されます。解決されたレイアウト ファイル名の拡張子がMvcSettings.ViewExtensions設定で指定された拡張子のいずれかと一致する場合、パイプラインは実行を停止し、MVC要求ハンドラーが引き継ぎます。

  • TransferControllerRequest: このプロセッサは、TransferMvcLayoutプロセッサの後に配置されます。レイアウトが解決されていない場合は、現在のアイテムのControllerフィールドが検査されます。値が含まれている場合、パイプラインは実行を停止し、MVC要求ハンドラーが引き継ぎます。その後、指定されたコントローラーがアイテムのレンダリングを担当します。

MVC固有のパイプライン

次の表に、MVCでのみ使用されるすべてのSitecoreパイプラインを示します。

Pipeline

Description

RequestBegin(リクエストビギニング)

これは、要求がメインHttpRequestパイプラインから渡された後のMVC要求の最初のアクションです。

PageContextが作成され、現在のスレッドに割り当てられます。

リクエストがフォーム投稿の場合、関連するフォームハンドラ(存在する場合)が実行されます。

リクエストエンド

これは、MVC要求の最後のアクションです。このパイプラインは現在使用されていません。

CreateController(クリエイトコントローラー)

このパイプラインは、MVC要求ハンドラーによって選択された現在のルートのコントローラーを作成するために、SitecoreControllerFactoryによって呼び出されます。

要求された項目 (PageContext.Item) が ( __Controller Nameフィールドで) コントローラーを指定している場合、このコントローラーはインスタンス化されて返されます。それ以外の場合は、デフォルトSitecoreControllerのインスタンスが返されます。

アクション実行

このパイプラインは、MVCコントローラー アクションが実行される前に実行されます。このパイプラインは現在使用されていません。

アクション実行

このパイプラインは、MVCコントローラー アクションが実行された後に実行されます。このパイプラインは現在使用されていません。

リザルト実行

このパイプラインは、MVCの結果が実行される前に実行されます。このパイプラインは現在使用されていません。

リザルト実行

このパイプラインは、MVCの結果が実行された後に実行されます。このパイプラインは現在使用されていません。

例外

このパイプラインは、MVCランタイムが未処理の例外をキャッチした後に実行されます。このパイプラインは現在使用されていません。

このパイプラインにカスタム プロセッサをアタッチする場合、このプロセッサは、プロセッサに渡されるExceptionArgsオブジェクトのExceptionContext.ExceptionHandledプロパティを設定する必要があります。それ以外の場合、Sitecoreは標準のエラー処理を行います。

GetPageItemの

このパイプラインは、ルート情報を使用して要求された項目を解決します。ルートからアイテムを解決できない場合は、Context.Itemが使用されます。

ビルドページ定義

このパイプラインは、ページ項目のRenderingsフィールドのXMLベースのレイアウト定義を使用して、初期PageDefinitionを構築します。

GetPageRendering (英語)

このパイプラインは、現在の要求の出力を作成するためのページのルート レンダリングとして使用するレンダリングを選択します。

現在、ルート レンダリングは、現在のデバイス(PageContext.Device)のみに基づいて選択されています。

GetRenderer (英語)

このパイプラインは、抽象的なレンダリング定義 (レンダリング) を、出力をクライアント (レンダラー) にレンダリングできるオブジェクトに変換します。

モデルの取得

このパイプラインは、MVCビューをレンダリングするときに使用するモデル オブジェクトを作成します。これは通常、ASP.NET MVC 3 Razorビューです。

パイプラインがモデルを返さない場合、ビューはEmptyModelのインスタンスを受け取ります。これにより、.cshtmlファイルに @modelディレクティブが含まれているため、モデルが想定されている場合、意味のあるエラー メッセージが表示されます。

レンダープレースホルダー

このパイプラインは、Html.Sitecore().Placeholder拡張メソッドの一部として呼び出されます。ネストされたプレースホルダー (該当する場合) を処理します。

デフォルトでは、パイプラインは現在のPageDefinitionで指定されたプレースホルダー名に一致するすべてのレンダリングを検索し、レンダリングします。子レンダリングは、レンダリングによって明示的にレンダリングされる場合にのみ、通常はHtml.Sitecore().Inner()を呼び出します。

レンダリング

パイプラインは、指定されたレンダリングをレンダリングします。このパイプラインは、キャッシングを処理し、レンダリングのソース項目にアクセスするためのIRenderingContextを設定します。これにより、ネストされたレンダリングがサポートされます。

この記事を改善するための提案がある場合は、 お知らせください!