SitecoreHelper.Field メソッドがレンダリングするアイテムのフィールドのルールについて

samatsu 8/26/2017 1941 N/A Sitecore Programming

SitecoreHelperのFieldヘルパーメソッドがどのアイテムのフィールドをレンダリングするのかを選択する方法をまとめます。

SitecoreHelper.Field ヘルパーメソッドを使用すると、引数で指定したフィールドを cshtml の中に簡単に出力できます。cshtml上で実際にFieldヘルパーメソッドを呼び出す場合は次のようなコードを記載します。この例では Title という名前のフィールドを出力するように指定しています。

@Html.Sitecore().Field("Title")

Field ヘルパーメソッドは引数にItemオブジェクトを取るオーバーライドがあります。この場合は、引数で指定されたItemのフィールドを出力します。では、引数に Item オブジェクトが指定されない場合、どのアイテムのフィールドを出力するのかというと単純で次の順に決まります。

  1. データソースが設定されている場合 データソースに指定されたアイテムのフィールド
  2. 上記ではない場合は、コンテキストアイテム(ページに対応するアイテム)のフィールド

なので、データソースが指定されていれば、そのアイテムのフィールド。そうでない場合はコンテキストアイテムにフォールバックするという流れになります。

これは、コントローラーレンダリングでもビューレナリングでも同じ動作になります。