Razor メディエーターで利用できる (非常に役立つ) ドキュメントをご覧になりましたか?
これらは、現在のコンポーネントとページにアクセスする例でいっぱいです。わずか 10 秒の検索で、次のフラグメントが得られます。
<body class=”@Page.Metadata.BodyClass”>
<div class=”@Component.Fields.NewsStyle”>
<img src=”@Fields.HeaderImage.ID” alt=”@Fields.HeaderImage.AltText” />
編集:フォローアップのコメントに詳細を追加したようです。バートが提案するようにして、それらの詳細を質問に追加することをお勧めします。それまでの間、ドキュメントの検索にさらに数分お時間をいただきます。
公式ドキュメント (上記でリンクした Word ドキュメント) には、メタデータを処理しているように見える次の例が含まれています。
@foreach (var keyword in Publication.MetaData.SomeKeywordFields) {
<li>@keyword.Title (@keyword.Id)</li>
}
Razor テンプレートの出力は、パッケージの出力項目になります。したがって、Razor メディエーターを使用して出力アイテムを処理しても意味がありません。そのためには、通常の C# (フラグメントまたはアセンブリ) TBB を使用することもできます。
別の編集:Razorメディエーターの暗黙的Fields
な変数は常にコンポーネントフィールドにMetadata
マップされ、変数は常にコンポーネントのメタデータフィールドにマップされるようです。便宜上、上記の名前を Google コードの関連するフラグメントにリンクしました。
したがって、次の 2 つのオプションがあるようです。
- ページまたはコンポーネントのどちらにいるかを検出し (たとえば、暗黙的
Page
な変数が存在するかどうかを確認することによってnull
)、あらゆる場所に条件式を含めます ( isInPage ? Page.Metadata : Metadata
)
- Razor メディエーター コードのこの制限を自分で修正するか、誰かを雇って修正してもらいます