【发布时间】:2016-12-21 06:38:31
【问题描述】:
我试图通过后面的代码访问子布局的数据源值,我在数据源中得到空字符串。
以下是我在 sitecore 中的 Banner 子布局的屏幕截图以及如何在演示文稿中设置数据源值:
Banner Sublayout with Datasource location and template set
Banner sublayout added to presentation and datasource set to an item
下面是我用来检索数据源的代码:
using Sitecore.Data.Items;
using Sitecore.Web.UI.WebControls;
using System;
using System.Web.UI;
public partial class Banner : UserControl
{
private Item _dataSource = null;
public Item DataSource
{
get
{
if (_dataSource == null)
if (Parent is Sublayout)
{
_dataSource = Sitecore.Context.Database.GetItem(((Sublayout)Parent).DataSource);
}
return _dataSource;
}
}
private void Page_Load(object sender, EventArgs e)
{
var test = DataSource;
Item a = Sitecore.Context.Item;
}
}
我做错了什么或者可能是什么问题?
【问题讨论】:
-
是否所有相关项目都已发布(当前项目、数据源、..)?你能在网络数据库中验证吗..
-
和题外话:如果你要投射,使用“as”而不是“is”;)
-
@Gatogordo - "as" 用于强制转换,"is" 用于检查继承。它们不可互换,除非您建议他使用“as”进行强制转换并将他的“if”语句替换为 null 检查,即检查“as 强制转换是否有效。
-
尝试将您的上下文数据库更改为 master 并查看问题是否仍然存在?如果与出版无关。