2015-11-13 22 views
1

我有一個我正在映射的類型(FooterFolder),它具有屬性SocialMedia,我想使用它自己的流暢配置進行映射。在玻璃映射器上使用流派映射到子孫類型

這裏的頁腳

loader.Add<FooterFolder>() 
     .TemplateId("3E1C2A35-C62C-4FCE-B576-787F23E7728D") 
     .AutoMap() 
     .Fields(config => 
     { 
      config.Field(x => x.LogoLink) 
       .FieldName("Logo Link"); 
     }) 
     .Query(x => x.SocialLinks).IsRelative().InferType().Query("./Social Links/*"); 

而社會化媒體

loader.Add<SocialMedia>() 
     .TemplateId("1A1D6464-CB5A-433F-B7A9-9D10FA8E4BFE") 
     .AutoMap() 
     .Field(x => x.LinkLink).FieldName("Link"); 

的配置如果我改變對社會化媒體的字段的名稱,只是鏈接,它的工作原理(大概使用自動映射)但是我想在名稱不完全匹配的情況下控制映射。有什麼辦法可以做到這一點?

這裏是我FooterFolder defenition:

public class FooterFolder : FolderBase 
{ 
    public virtual string Copyright { get; set; } 

    public virtual Image Logo { get; set; } 

    public virtual Link LogoLink { get; set; } 

    public virtual IEnumerable<SocialMedia> SocialLinks { get; set; } 
} 

而且SocialMedia

public class SocialMedia : ContentBase 
{ 
    public virtual Image Icon { get; set; } 

    public virtual Link LinkLink { get; set; } 

    public virtual string Shorthand { get; set; } 
} 

(我命名屬性LinkLink只是爲了測試映射通常情況下,他們只能將喜歡的事情不同LogoLink其中Sitecore定義中有空格)

在sitecore中,Social Media有一個名爲LinkGeneral Link。如果我將SocialMedia上的物業名稱更改爲Link,它可以很好地通過自動映射工作。

+3

致downvoter:我可以得到一個解釋,爲什麼? –

+0

我對這個問題有點困惑,FieldName方法不允許你在Sitecore中指定屬性映射到這個鏈接的字段名稱http://www.glass.lu/Mapper/Sc/HowTo/4 -MappingAField。或者您是否需要一種方法來控制自動映射過程?我沒有投票btw –

+0

正確,FieldName確實允許我指定字段名稱,我試圖在'SocialMedia.'上執行。問題是,當通過FooterFolder加載SocialLinks時,他們似乎沒有運行該FieldName'調用。 –

回答

1

我結束了切換到使用SitecoreGlassMap版本的配置,而不是IConfigurationLoader版本,它工作正常。

相關問題