Отключить проверку версии для определенного свойства в картографе стекла Sitecore
Я использую SItecore 7.1
с Glass.Mapper.Sc 3.1.7.26
, У меня есть следующая модель, где Service Id
поле является общим:
[SitecoreType]
public class ServiceMapping
{
[SitecoreField(FieldName = "Service Id")]
public virtual string ServiceId { get; set; }
}
И у меня есть следующая модель, которая ссылается на Service Mapping над Droptree
поле (также общее):
[SitecoreType]
public class OnlineService
{
[SitecoreInfo(SitecoreInfoType.DisplayName)]
public virtual string DisplayName { get; set; }
[SitecoreField(FieldName = "Service")]
public virtual ServiceMapping ServiceMapping { get; set; }
}
Когда я загружаю экземпляр OnlineService
он должен зависеть от языка, из-за DisplayName
, Давайте предположим, что у меня есть OnlineService
доступно на немецком и английском языках, и мой ServiceMapping
только на английском, тогда я получаю null
для ServiceMapping
объект при запросе страницы на немецком языке.
Можно ли дать ServiceMapping.ServiceId
свойство параметр, который он не должен проверять для существующей языковой версии? Я знаю, что есть VersionCountDisabler()
, но я не могу использовать это, потому что мне нужно OnlineService
класс для проверки языковой версии.
1 ответ
Хм, это сложно, код ниже не проверен (я пишу это, как я думаю о решении), но должен указать вам направление записи.
public class MyCrazyType : SitecoreFieldTypeMapper
{
public override object GetFieldValue(string fieldValue, Mapper.Sc.Configuration.SitecoreFieldConfiguration config, SitecoreDataMappingContext context)
{
using (new VersionCountDisabler())
{
return base.GetFieldValue(fieldValue, config, context);
}
}
public override bool CanHandle(Mapper.Configuration.AbstractPropertyConfiguration configuration, Context context)
{
//this will mean this handle only works for this type
return configuration.PropertyInfo.PropertyType == typeof (ServiceMapping);
}
}
Использование этого стекла отобразит пустой элемент в целевой тип.
Вам нужно будет зарегистрировать обработчик в Glass, см. Этот учебник: http://glass.lu/docs/tutorial/sitecore/tutorial19/tutorial19.html