Я пытаюсь добиться следующего со стеклянным картографом, но не могу заставить его работать.Как реализовать наследование шаблона Sitecore с помощью Glass Mapper
У меня есть шаблон Главная страница, которая не имеет каких-либо полей, но сам наследует следующие два шаблона:
Navigation Template
Fields: Navigation Title
Meta Information Template
Fields: Page Title, Meta Description
I Созданы соответствующие интерфейсы/cla ГСЭС следующим образом:
[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; }
}
Когда я затем попытайтесь получить доступ к моей странице все атрибуты всегда нуль:
var context = new SitecoreContext();
var page = context.GetCurrentItem<HomePage>();
Я пытался несколько различных подходов к этому, но ничего не работает. Также то, что было описано в разных учебниках, не сработало. Единственное, что работает, - это когда я добавляю поля непосредственно в шаблон домашней страницы, но я не хочу этого, так как у меня более одного типа страницы, и поэтому я хочу наследовать поля.
Кто-нибудь знает, что мне здесь не хватает ?! Я использую Sitecore 7 с .NET 4.5, если это имеет значение.
Я не уверен, если вы можете автокарта на уровне интерфейса. Попробуйте определить явные атрибуты [SitecoreField()] для свойств интерфейса и удалить свойство AutoMap на интерфейсах. Посмотрите, работает ли это. Я также предлагаю вам использовать FieldId = "" для сопоставления с идентификаторами GUID вместо имен полей. –
Привет Рууд, Спасибо за ваш ответ. Я удалил automap и вместо этого добавил fieldid. Однако ничего не изменилось. Нужно ли мне активировать что-либо (конфиги или что-то еще)? Я чувствую, что не может быть трудно заставить это работать, похоже на довольно простой сценарий, но я не знаю, что мне здесь не хватает. – 5earch
Правильно ли вы настроили инициализацию Glass, чтобы загружать все модели в память при запуске? –