チュートリアル: カスタム ロジックを使用したビュー コンポーネントの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
September 2024より前にASP.NET Coreアプリを統合した場合は、従来の ASP.NET CoreレンダリングSDKバージョン22以前が使用されています。このSDKは更新プログラムを受け取らなくなったため、新しい ASP.NET Core SDKの最新バージョンにアップグレードすることをお勧めします。
ビュー コンポーネントを使用して、コンテンツをレンダリングし、ビュー モデルにデータを供給します。ビュー コンポーネントは、追加のレンダリング ロジックを実装するために使用できるC# クラスをサポートしているため、パーシャル ビューやモデル バインド ビューよりも強力です。ASP.NET Coreビュー コンポーネントに関するMicrosoftのドキュメントを参照してください。
従来のビュー コンポーネントは モデル バインディングをサポートしていませんが、Sitecore ASP.NETレンダリングSDKはSitecoreレイアウト サービス 出力へのモデル バインディングを提供します。
このチュートリアルでは、ASP.NET Coreビュー コンポーネントを使用してSitecoreコンテンツをレンダリングすると同時に、カスタム ロジックを追加してビュー モデルにデータを追加する方法を示します。
このチュートリアルでは、次の方法について説明します。
-
My Serviceテンプレートを作成します。
-
MyService JSONレンダリングを作成します。
-
MyService JSONレンダリングのMainプレースホルダを設定します。
-
MyProjectサイトを公開します。
-
MyService JSONレンダリングをMyProject/Homeページに追加します。
-
IFakeServiceサービス インターフェイスを作成します。
-
FakeServiceサービス・クラスを作成します。
-
FakeServiceサービスをStartupクラスに登録します。
-
MyServiceModelモデルを作成します。
-
MyServiceViewComponentビュー・コンポーネント・クラスを作成します。
-
MyService/Default Razorビューを作成します。
-
MyServiceViewComponentビュー・コンポーネントをStartupクラスに登録します。
-
MyServiceデータ ソースにコンテンツを追加します。
My Serviceテンプレートを作成する
My Serviceテンプレートを作成する
My Serviceテンプレートは、MyServiceデータ ソースのヘッダー テキスト フィールドのセットを定義します。
My Serviceテンプレートを作成するには:
-
コンテンツ エディタで、/sitecore/Templates/Project/MyProjectフォルダを右クリックし、Insert、New Templateの順にクリックします。
-
Select nameダイアログのNameフィールドにMy Serviceと入力し、Nextをクリックします。
-
Locationダイアログで、選択したパスにテンプレートが作成されていることを確認し、「Next」と「Close」をクリックします。コンテンツ エディターでMy Serviceテンプレートが自動的に開きます。
-
My ServiceテンプレートのBuilderタブで、My Service Template Fieldsという名前のセクションと2つのフィールドを作成します。
-
DateHeader (1行テキスト)
-
ValueHeader (1行テキスト)
-
-
My Serviceテンプレートを保存します。
MyService JSONレンダリングを作成する
MyService JSONレンダリングを作成する
MyService JSONレンダリングでは、My Serviceテンプレートに基づいて任意のデータソースのコンテンツをレンダリングできます。
MyService JSONレンダリングを作成するには:
-
コンテンツ エディタで、/sitecore/Layout/Renderings/Project/MyProjectフォルダを右クリックし、Insert、Json Renderingの順にクリックします。
-
Messageダイアログで、「MyService」と入力し、「OK」をクリックします。コンテンツ エディタ は、MyService JSONレンダリングを自動的に開きます。
-
MyService JSONレンダリングのContentタブのEditor Optionsセクションで、次のフィールドを設定します。
-
Datasource Locationフィールドに ./と入力します。
-
Datasource TemplateフィールドでInsert linkをクリックし、Insert Itemダイアログで/templates/Project/MyProject/My Serviceを選択してInsertをクリックします。
-
-
MyService JSONレンダリングを保存します。
MyService JSONレンダリングのMainプレースホルダーを構成する
MyService JSONレンダリングのMainプレースホルダーを構成する
Mainプレースホルダーは、設定したレンダリングのみを受け入れます。
MyService JSONレンダリングのMainプレースホルダを設定するには:
-
コンテンツ エディターで、/sitecore/Layout/Placeholder Settings/Project/MyProject/Mainプレースホルダー アイテムに移動します。
-
MainプレースホルダーのContentタブのDataセクションのAllowed ControlsフィールドでEditをクリックします。
-
Select ItemsダイアログのEditorsタブのAllペインで、Layout/Renderings/Project/MyProject/MyServiceをクリックし、青い矢印
をクリックして、MyService JSONレンダリングをSelectedペインにコピーします。次に、「OK」をクリックします。 -
Mainプレースホルダーを保存します。
MyProjectサイトを公開する
MyProjectサイトを公開する
MyProjectサイトを公開するには:
-
コンテンツ エディタで、sitecore/Content/MyProject/Homeに移動します。
-
Publishタブで、「Publish site」をクリックします。
-
Publish Siteダイアログで、「Republish」チェックボックスを選択し、「OK」をクリックします。
MyService JSONレンダリングをMyProject/Homeページに追加します
MyService JSONレンダリングをMyProject/Homeページに追加します
MyProject/HomeページのMainプレースホルダーにMyService JSONレンダリングを追加し、MyServiceデータ ソースを作成してから、ページをパブリッシュしてレンダリング ホスト ログで出力を確認する必要があります。
MyService JSONレンダリングをMyProject/Homeページに追加するには:
-
エクスペリエンス エディターで、MyProject/Homeページに移動します。
-
HomeタブでComponentをクリックし、Mainプレースホルダにレンダリングを追加できるAdd hereハンドラの1つをクリックします。
-
Select a Renderingダイアログで、「My Service」をクリックしてSelect。
-
Select the Associated Contentダイアログの「Create New Content」タブの「Name」フィールドに「MyService data source」と入力し、「OK」をクリックします。
手記StartupクラスにMyServiceViewComponentを登録するまで、Unknown component 'MyService'メッセージが表示されます。
-
MyProject/Homeページを保存します。
-
Homeタブで、「Publish」をクリックします。
-
Publish Itemダイアログで、「Smart publish」および「Publish related items」チェックボックスを選択し、「Publish」をクリックします。
-
レンダリング ホストにアクセスし、MyService JSONレンダリングでUnknown Component 'MyService'が印刷されることを確認します。
-
レンダリング ホスト ログで、MyServiceデータ ソース のIDとSitecore Layout Serviceレスポンスの空白のヘッダー テキストを含むMyServiceコンポーネントが表示されていることを確認します。
IFakeServiceサービス インターフェイスを作成する
IFakeServiceサービス インターフェイスを作成する
IFakeServiceサービス インターフェイスは、FakeService実装に含める必要があるものを定義します。顧客ソリューションでは、これを実際のビジネス ロジックを含むサービスに置き換えます。
FakeServiceインターフェースを作成するには:
-
管理者権限を持つVisual Studio、Solution ExplorerでRenderingHostプロジェクトを右クリックし、Add、New Folderの順にクリックします。フォルダにServicesという名前を付けます。
-
RenderingHost/Servicesフォルダを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemダイアログで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Codeをクリックします。
-
中央のウィンドウで、Interfaceをクリックします。
-
ダイアログの下部にあるNameフィールドにIFakeService.csと入力し、Addをクリックします。
-
-
IFakeService.csファイルで、内容を次のコードで置き換えます。
-
IFakeService.csファイルを保存します。
FakeServiceサービス・クラスを作成する
FakeServiceサービス・クラスを作成する
FakeServiceサービス・クラスは、MyServiceViewComponent・クラスの日付と値を、MyService・データ・ソース・ヘッダー・テキストの下に表示するようにします。
FakeServiceサービス・クラスを作成するには、次のようにします。
-
Visual StudioのSolution Explorerで、RenderingHost/Servicesフォルダを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemダイアログで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Codeをクリックします。
-
中央のウィンドウで、Classをクリックします。
-
ダイアログの下部にあるNameフィールドにFakeService.csと入力し、Addをクリックします。
-
-
FakeService.csファイルで、内容を次のコードで置き換えます。
-
FakeService.csファイルを保存します。
FakeServiceサービスをStartupクラスに登録します
FakeServiceサービスをStartupクラスに登録します
FakeServiceはサービスであるため、Startupクラスに登録する必要があります。
FakeServiceサービスをStartupクラスに登録するには、次のようにします。
-
Visual Studio、Solution Explorer、RenderingHostプロジェクトで、Startup.csファイルをダブルクリックします。
-
Startup.csファイルに、MyProject.Services名前空間を追加します。
-
StartupクラスのConfigureServicesメソッドで、次のFakeServiceを追加します。
-
Startup.csファイルを保存します。
MyServiceModelモデルの作成
MyServiceModelモデルの作成
MyServiceViewComponentビュー コンポーネント クラスは、MyServiceデータ ソース ヘッダー テキストと、MyServiceModelモデルのFakeServiceサービス日付および値フィールドを組み合わせます。
MyServiceModelモデルを作成するには:
-
Visual StudioのSolution Explorerで、RenderingHost/Modelsを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemダイアログで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Codeをクリックします。
-
中央のウィンドウで、Classをクリックします。
-
ダイアログの下部にあるNameフィールドにMyServiceModel.csと入力し、Addをクリックします。
-
-
MyServiceModel.csファイルで、内容を次のコードで置き換えます。
DateHeaderプロパティとValueHeaderプロパティはIFieldから継承され、Sitecore Layout Serviceレスポンスに自動的にバインドされます。このようにして、MyServiceデータソースヘッダーテキストが入力されます。
ServiceDateプロパティとServiceValueプロパティは、FakeServiceのMyServiceViewComponentクラスによって設定されます。
IsEditingプロパティは、SitecoreContextProperty属性でSitecoreContextにバインドされます。
-
MyServiceModel.csファイルを保存します。
MyServiceViewComponentビュー コンポーネント クラスを作成します
MyServiceViewComponentビュー コンポーネント クラスを作成します
MyService JSONレンダリング、FakeServiceサービス、およびMyServiceModelモデルを作成したので、このチュートリアルの中心となるMyServiceViewComponentクラスを作成できます。
MyServiceViewComponentクラスでは、FakeServiceサービス コンテンツがMyServiceModelモデル コンテンツに追加され、MyService/Defaultビューに表示されます。ここでは、任意のカスタムロジックを追加または呼び出すことができます。
MyServiceViewComponentクラスを作成するには、次のようにします。
-
Visual StudioのSolution Explorerで、RenderingHostプロジェクトを右クリックし、Add、New Folderの順にクリックします。フォルダにViewComponentsという名前を付けます。
-
RenderingHost/ViewComponentsフォルダを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemダイアログで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Codeをクリックします。
-
中央のウィンドウで、Classをクリックします。
-
ダイアログの下部にあるNameフィールドにMyServiceViewComponent.csと入力し、Addをクリックします。
-
-
MyServiceViewComponent.csファイルで、内容を次のコードで置き換えます。
-
MyServiceViewComponent.csファイルを保存します。
MyService/Default Razorビューを作成する
MyService/Default Razorビューを作成する
MyService/Default RazorビューはMyServiceModelモデルにバインドされ、ページ上にコンテンツが表示されます。
MyService/Defaultビューを作成するには:
-
Visual StudioのSolution Explorerで、RenderingHost/Views/Shared/Componentsフォルダを右クリックし、Add、New Folderの順にクリックします。フォルダにMyServiceという名前を付けます。
手記MyServiceフォルダ名は、MyServiceViewComponentクラス名と一致する必要がありますが、ViewComponentサフィックスは付きません。このようにしてVisual StudioViews/Shared/Components/MyService/DefaultビューをViewComponents/MyServiceViewComponentクラスに接続します。
-
RenderingHost/Views/Shared/Components/MyServiceフォルダを右クリックし、Add、New Itemの順にクリックします。
-
Add New Itemダイアログで、次の操作を行います。
-
左側のウィンドウで、Installed/Visual C#/ASP.NET Core/Webをクリックします。
-
中央のウィンドウで、Razor View - Emptyをクリックします。
-
ダイアログの下部にあるNameフィールドにDefault.cshtmlと入力し、Addをクリックします。
-
-
Default.cshtmlファイルで、内容を次のコードで置き換えます。
-
Default.cshtmlファイルを保存します。
MyServiceViewComponentビューコンポーネントをStartupクラスに登録します
MyServiceViewComponentビューコンポーネントをStartupクラスに登録します
WebページでMyServiceViewComponentビュー コンポーネントを使用するには、Startupクラスに登録する必要があります。
MyServiceViewComponentビュー コンポーネントをStartupクラスに登録するには、次のようにします。
-
Visual Studio、Solution Explorer、RenderingHostプロジェクトで、Startup.csファイルをダブルクリックします。
-
Startup.csファイル、Startupクラス、ConfigureServicesメソッド、AddSitecoreRenderingEngineサービス登録で、MyServiceビューコンポーネントオプションを追加します。
手記AddViewComponentパラメーターは、MyServiceViewComponentの名前と一致する必要がありますが、ViewComponentサフィックスは使用しないでください。
-
Startup.csファイルを保存します。
エクスペリエンス エディターとレンダリング ホストでMyProject/Homeページを開くと、MyServiceViewComponentビュー コンポーネントの出力を確認できます。レンダリング ホスト ログでエラーを確認することをお勧めします。


左のスクリーンショットは、エクスペリエンス エディターとMyServiceViewComponentビュー コンポーネントを示しています。 No text in fieldヘッダーは、MyServiceデータソースヘッダーのテキストプロパティがまだ設定されていないことを示しています。日付と数字42 、FakeServiceサービスが編集モードでモック値を表示することを確認します。
右のスクリーンショットは、MyServiceViewComponentビュー コンポーネントを使用したレンダリング ホストを示しています。空のMyServiceデータソースヘッダーのテキストプロパティは表示されず、日付と乱数は、FakeServiceサービスがライブモードでライブ値を表示することを確認します。
MyServiceデータ ソースにコンテンツを追加する
MyServiceデータ ソースにコンテンツを追加する
レンダリング ホスト ページでヘッダー テキストを取得するには、エクスペリエンス エディターを使用して、MyServiceデータ ソースにコンテンツを追加します。
MyServiceデータソースにコンテンツを追加するには:
-
エクスペリエンス エディターで、MyProject/Homeページに移動します。
-
独自のヘッダーテキスト値をMyServiceデータソースに挿入するには、「 No text in field」をクリックします。
-
MyProject/Homeページを保存します。
-
Homeタブで、「Publish」をクリックします。
-
Publish Itemダイアログで、「Smart publish」および「Publish related items」チェックボックスを選択し、「Publish」をクリックします。
-
レンダリング ホストにアクセスして、ヘッダー テキスト値と共にMyServiceViewComponentビュー コンポーネントが表示されていることを確認します。
