2015-08-10 2 views
1

Я использую Glass Mapper: 4.0.1.8 для сопоставления мультилиста с IEnumberable в Sitecore 8. Он действительно возвращает количество отсчетов в IEnumberable, но поля внутри, все из которых отображаются в нуль. Ниже приведен код, который я использую:Картографирование MultiList с использованием Glass Mapper

public void GetPromotedNews() 
{ 
    var NewsListingPage = Sitecore.Context.Database.GetItem(new ID(ItemIDS.NewsListingCorporate)); 
    var NewsListingPageItem = NewsListingPage.GlassCast<NewsListingPage>(); 


    foreach (var newslistingcategory in NewsListingPageItem.NewsCategory) //This is returning two results which are correct 
    { 
     var item = newslistingcategory.CategoryName; //this is always returning null ? 
    }  

} 
public class NewsListingPage 
{ 
    [SitecoreField(FieldName = "Page title")] 
    public string PageTitle { get; set; } 

    [SitecoreField(FieldName = "Page description")] 
    public string PageDescription {get; set;} 

    [SitecoreField(FieldName = "News category", Setting = SitecoreFieldSettings.InferType)] 
    public virtual IEnumerable<ContentCategory> NewsCategory { get; set; } 
} 

[SitecoreType(TemplateId = DCP.Resources.TemplateIDS.CategoryTemplateID, AutoMap = true)] 
public class ContentCategory : SCItem 
{ 
    [SitecoreField(FieldName = "Category name")] 
    public string CategoryName { get; set; } 
    [SitecoreField(FieldName = "Category icon")] 
    public Image CategoryICON { get; set; } 

    [SitecoreField(FieldName = "text")] 
    public string Text { get; set; } 
} 

ответ

2

Попробуйте Обновление модели категории контента, чтобы иметь виртуальные свойства

[SitecoreType(TemplateId = DCP.Resources.TemplateIDS.CategoryTemplateID, AutoMap = true)] 
public class ContentCategory : SCItem 
{ 
    [SitecoreField(FieldName = "Category name")] 
    public virtual string CategoryName { get; set; } 
    [SitecoreField(FieldName = "Category icon")] 
    public virtual Image CategoryICON { get; set; } 

    [SitecoreField(FieldName = "text")] 
    public virtual string Text { get; set; } 
} 
0

Making them virtual должен сделать трюк.

Альтернативная причина, по которой вы используете null, используя GlassMapper, не может решить тип, к которому вы пытаетесь выполнить сопоставление. Например, если я установил свой тип string, но это был действительно List<string>. Я бы также рекомендовал TDS. Вы можете использовать элементы управления TDS и автоматически генерировать свои классы.

+0

Жаль, что я буду делать, я новичок в этом все –

0

Возможны две причины, когда я столкнулся с этой проблемой.

  1. Шаблон не опубликован правильно.
  2. Я добавил следующий атрибут в свое поле.

    [SitecoreField(Setting = Glass.Mapper.Sc.Configuration.SitecoreFieldSettings.DontLoadLazily)] 
    
+0

это на самом деле не ответить на этот вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав [Ask Question] (https://stackoverflow.com/questions/ask). Вы также можете [добавить щедрость] (https://stackoverflow.com/help/privileges/set-bounties), чтобы привлечь больше внимания к этому вопросу, как только у вас будет достаточно [репутации] (https://stackoverflow.com/help/ Что-репутация). - [Из обзора] (/ review/low-quality-posts/18474961) – JHBonarius

Смежные вопросы