グラスマッパーで次のことを達成しようとしましたが、うまくいきません。
フィールド自体を持たないが、次の 2 つのテンプレートを継承するホームページ テンプレートがあります。
Navigation Template
Fields: Navigation Title
Meta Information Template
Fields: Page Title, Meta Description
対応するインターフェース/クラスを次のように作成しました。
[SitecoreType(TemplateId = "{5BAB563C-12AD-4398-8C4A-BF623F7DBCDC}", AutoMap = true)]
public interface INavigation
{
[SitecoreField(FieldName = "Navigation Title")]
string NavigationTitle { get; set; }
}
[SitecoreType(TemplateId = "{95539498-31A5-4CB5-8DD6-C422D505C482}", AutoMap = true)]
public interface IMetaInformation
{
[SitecoreField]
string PageTitle { get; set; }
[SitecoreField]
string MetaDescription { get; set; }
}
[SitecoreType(TemplateId = "{F08693E5-8660-4B13-BBD6-7B9DC6091750}", AutoMap = true)]
public class HomePage : INavigation, IMetaInformation
{
public virtual string NavigationTitle { get; set; }
public virtual string PageTitle { get; set; }
public virtual string MetaDescription { get; set; }
}
次に、自分のページにアクセスしようとすると、すべての属性が常に null になります。
var context = new SitecoreContext();
var page = context.GetCurrentItem<HomePage>();
これに対していくつかの異なるアプローチを試みましたが、何も機能しません。また、さまざまなチュートリアルで説明されていることは機能しませんでした。唯一うまくいくのは、ホームページ テンプレートにフィールドを直接追加するときですが、複数のページ タイプがあり、フィールドを継承したいので、そうしたくありません。
ここで何が欠けているのか誰にもわかりませんか?! ちなみに、違いがある場合は、.NET 4.5 で Sitecore 7 を使用しています。