部分的な視点

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

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

!重要以前にアプリを統合していた場合、それは旧版のASP.NETコアレンダリングSDK(バージョン22以前)を使用しています。このSDKは更新を受け取っていないため、最新のバージョンへのアップグレード をお勧めします。

部分ビューは、別のビューのレンダリングされた出力内にHTMLの出力をレンダリングします。 部分ビュー という用語は、ASP.NETモデルビューコントローラー(MVC)アプリ(マークアップファイルを ビューと呼ぶ場合)やRazor Pagesアプリ(マークアップファイルを ページと呼ぶ場合)を開発する際に使います。詳細については、Microsoftの部分ビューに関するドキュメントをご覧ください。

SitecoreレンダリングエンジンSDKは、Sitecoreページを構成する軽量コンポーネントに対してMVC部分ビューを使用しています。例えば、プレースホルダーのみを含む構造コンポーネントです。

Sitecoreレンダリングホストアプリケーションで部分ビューを作成することは 標準的なMVCの規則に従います。同様に、Sitecoreレンダリングホストにおける部分ビュー発見はASP.NETコアMVCの標準ルールに従います。

レイアウトサービスの応答を部分ビューにマッピングする必要があります。これらのマッピングはStartupクラスのConfigureServices()メソッドで設定されます。

マッピング述語の順序は拡張メソッド呼び出しの順序によって決まります。最も貪欲なマッピング述語の前に特定のマッピング述語を追加することを推奨します。

部分ビューの設定

部分ビューを作成したら、AddPartialView()およびAddDefaultPartialView()拡張メソッドでレイアウトサービスの応答を部分ビューにマッピングする必要があります。

この例では、AddPartialView("HeaderBlock", "_HeaderBlock")HeaderBlock応答成分を_HeaderBlock部分ビューにマッピングし、AddPartialView(name => name.StartsWith("sc"), "_OtherBlock")scの接頭辞を持つすべての応答成分を_OtherBlock部分ビューにマッピングし、AddDefaultPartialView("_ComponentNotFound")は前の2つのメソッド呼び出しで一致しない応答成分を_ComponentNotFoundデフォルトの部分ビューにマッピングします。

public void ConfigureServices(IServiceCollection services) { var renderingEngineBuilder = services.AddSitecoreRenderingEngine(options => options

// Map Partials .AddPartialView("HeaderBlock", "_HeaderBlock") .AddPartialView(name => name.StartsWith("sc"), "_OtherBlock")

// Add fallback for any other component .AddDefaultPartialView("_ComponentNotFound"); ); }

部分的なRazorビューからSitecoreコンテンツにアクセスする方法

Razorビューでコードブロックを追加してレイアウトサービスデータにアクセスすることができます:

@using MyRenderingHost.ViewModels; @using Sitecore.LayoutService.Client.Response.Model.Fields

@{ var route = this.SitecoreRoute(); var context = this.SitecoreContext(); var component = this.SitecoreComponent().ReadFields(); var pageTitleField = route.ReadField("pageTitle"); }

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

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

Site name: @context.Site.Name

Route name: @route.Name

レイアウトサービスの結果からはこちらから内容を読み取ることができますが、モデルバインディングで値を読み取ることはできません。部分ビューでルート、コンテキスト、コンポーネントの値にアクセスする必要がある場合は、モデルバウンドビューやビューコンポーネントの使用を検討してください。

!注Sitecore.AspNet.RenderingEngine.Extensions名前空間でRazorページ拡張子を見つけられます:

  • SitecoreRoute() - 現在のSitecore Routeオブジェクトを取得。

  • SitecoreContext() - 現在のSitecore Contextオブジェクトを取得。

  • SitecoreComponent() - 現在のSitecore Componentオブジェクトを取得。

部分的な視点から表示コンポーネントへの移行

部分ビューはレイアウトサービスの応答からのデータアクセスを必要とする場合があります。これは部分ビューが意図したよりも複雑になっていることのサインかもしれません。この場合、モデルバウンドビューコンポーネントの使用を推奨します。

幸いなことに、部分ビューからモデルバウンドビューコンポーネントへの移行は非常に簡単です:

  • 必要なレイアウトサービス応答プロパティを持つビューモデルを作成します。
  • Startupクラスでは、部分ビューのレジストレーションをモデルバウンドビューのコンポーネントレジストレーションに置き換えます。
  • Razorビューが/Views/Shared/Components/SitecoreComponent フォルダに必ず配置されていることを確認してください。
この記事を改善するための提案がある場合は、 お知らせください!