使用 Glass Mapper 映射 MultiList
Mapping MultiList using Glass Mapper
我正在使用 Glass Mapper : 4.0.1.8 将多列表映射到 Sitecore 8 中的 IEnumberable
。它确实 returns IEnumberable
中的计数正确但字段里面都映射为空。以下是我正在使用的代码:
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; }
}
尝试更新您的内容类别模型以拥有虚拟属性
[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; }
}
应该可以解决问题。
您使用 GlassMapper 运行 为 null 的另一个原因是它无法解析您尝试映射到的类型。例如,如果我将类型设置为 string
,但它实际上是 List<string>
。我也会推荐 TDS。您可以源代码控制 TDS 项目并自动生成您的 类。
两个可能的原因是当我 运行 进入这个问题时。
- 模板发布不正确。
我在我的字段中添加了以下属性。
[SitecoreField(Setting = Glass.Mapper.Sc.Configuration.SitecoreFieldSettings.DontLoadLazily)]
我正在使用 Glass Mapper : 4.0.1.8 将多列表映射到 Sitecore 8 中的 IEnumberable
。它确实 returns IEnumberable
中的计数正确但字段里面都映射为空。以下是我正在使用的代码:
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; }
}
尝试更新您的内容类别模型以拥有虚拟属性
[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; }
}
您使用 GlassMapper 运行 为 null 的另一个原因是它无法解析您尝试映射到的类型。例如,如果我将类型设置为 string
,但它实际上是 List<string>
。我也会推荐 TDS。您可以源代码控制 TDS 项目并自动生成您的 类。
两个可能的原因是当我 运行 进入这个问题时。
- 模板发布不正确。
我在我的字段中添加了以下属性。
[SitecoreField(Setting = Glass.Mapper.Sc.Configuration.SitecoreFieldSettings.DontLoadLazily)]