Sitecore演示文稿详细信息呈现数据源为空

时间:2018-03-02 20:58:33

标签: sitecore8

在下面的代码中,数据源对于演示文稿详细信息中的所有渲染都是null,请帮助我在哪里出错

LayoutDefinition layout = 
LayoutDefinition.Parse(bioItem[Sitecore.FieldIDs.LayoutField]);

foreach (DeviceDefinition device in layout.Devices) {
 if (device.Renderings != null) { 
  for(var i =0; i < device.Renderings.Count;i++) { 
     RenderingDefinition rendering = (RenderingDefinition)device.Renderings[i];     
      var result = rendering.Datasource;
    } 
  } 
} 

1 个答案:

答案 0 :(得分:0)

首先,您应该知道有两个布局字段:

  • 共享:Sitecore.FieldIDs.LayoutField
  • 最终:Sitecore.FieldIDs.FinalLayoutField

我通常使用此代码段直接从布局中读取:

var devices = dataItem.Database.Resources.Devices;
var defaultDevice = devices.GetAll().First(d => d.Name.ToLower() == ScConstants.DefaultDeviceName);
var renderings = dataItem.Visualization.GetRenderings(defaultDevice, true);
foreach (var rendering in renderings)
{
    if (!string.IsNullOrWhiteSpace(rendering?.Settings.DataSource))
    {
     var datasource = dataItem.Database.GetItem(rendering.Settings.DataSource, dataItem.Language);
     .....

还有其他方法可以阅读Layout字段,但我建议您使用提供的API并将布局XML解析作为最后的手段。