部分的なビュー
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
パーシャル ビューは、別のビューのレンダリングされた出力内にHTML出力をレンダリングします。partial viewという用語は、マークアップ ファイルをviewsと呼ぶASP.NET Model-View-Controller (MVC) アプリ、またはマークアップ ファイルをpagesと呼ぶRazor Pagesアプリを開発するときに使用します。詳細については、部分ビューに関するMicrosoftのドキュメントを参照してください。
Sitecoreレンダリング エンジンSDKは、Sitecoreページを構成する軽量コンポーネントにMVCパーシャル ビューを使用します。たとえば、プレースホルダーのみを含む構造コンポーネントなどです。
Sitecoreレンダリング ホスト アプリケーションでのパーシャル ビューの作成 は、標準のMVC規則に従います。同様に、Sitecoreレンダリング ホストでのパーシャル ビューの検出は、ASP.NET Core MVCの標準ルールに従います。
レイアウト サービスの応答を部分ビューにマップする必要があります。これらのマッピングは、StartupクラスのConfigureServices() メソッドで構成されます。
パーシャル ビューの構成
パーシャルビューを作成したら、AddPartialView<TModel>() およびAddDefaultPartialView() 拡張メソッドを使用して、Layout Serviceの応答をパーシャルビューにマッピングする必要があります。
この例では、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<ContentBlock>();
var pageTitleField = route.ReadField<TextField>("pageTitle");
}
<section>
<h1 asp-for="@pageTitleField"></h1>
<h2>Site name: @context.Site.Name</h1>
<h2>Route name: @route.Name</h1>
<h2 asp-for="@component.Heading"></h2>
<div>
<sc-text asp-for="@component.Content"></sc-text>
</div>
</section>
ここでは、レイアウト サービスの結果からコンテンツを読み取ることができますが、モデル バインドを使用して値を読み取ることはできません。パーシャルビューでルート、コンテキスト、またはコンポーネントの値にアクセスする必要がある場合は、代わりにモデルバウンドビューまたはビューコンポーネントの使用を検討してください。
パーシャルビューからビューコンポーネントへの移行
部分ビューでは、レイアウト サービスの応答からのデータへのアクセスが必要な場合があります。これは、パーシャル ビューが意図したよりも複雑になっていることを示している可能性があります。この場合は、代わりにモデルバインドビューコンポーネントを使用することをお勧めします。
幸い、パーシャル ビューからモデル バインド ビュー コンポーネントへの移行は非常に簡単です。
-
必要なレイアウト サービスの応答プロパティを持つビュー モデルを作成します。
-
Startupクラスでは、パーシャル ビューの登録をモデル バインド ビュー コンポーネントの登録に置き換えます。
-
Razorビューが/Views/Shared/Components/SitecoreComponentフォルダーに配置されていることを確認します。