有时Sitecore不会返回某些项目。例如,下面的代码:Sitecore中的项目为空6
Sitecore.Data.ID itemId = new Sitecore.Data.ID(id);
Sitecore.Context.Database.GetItem(id);
这将返回null,但是如果相同的字符串ID被放置在内容编辑器中的内容树上面的搜索,它会返回的项目!上下文数据库是web,我已经多次重新发布该项目。
我正在使用Sitecore 6.2.0(rev。100701)。
有时Sitecore不会返回某些项目。例如,下面的代码:Sitecore中的项目为空6
Sitecore.Data.ID itemId = new Sitecore.Data.ID(id);
Sitecore.Context.Database.GetItem(id);
这将返回null,但是如果相同的字符串ID被放置在内容编辑器中的内容树上面的搜索,它会返回的项目!上下文数据库是web,我已经多次重新发布该项目。
我正在使用Sitecore 6.2.0(rev。100701)。
你确定这不是一个错字吗?我的意思是,你不应该通过itemId
而不是只有id
到GetItem
?
我不记得它是如何工作的,但是如果你传递一个字符串给这个方法,它可能把它当作路径而不是ID,并且试图通过路径来解决这个项目。您可以检查这个速度远远超过我做:
Sitecore.Data.ID itemId = new Sitecore.Data.ID(id);
Sitecore.Context.Database.GetItem(itemId);
是的,我很确定,对不起,我的错误,因为匆忙复制粘贴,即时通讯使用一些实用功能:public static Sitecore.Data.Items.Item GetItemById(Sitecore.Data.ID id) { return Sitecore.Context.Database.GetItem ID); } – lurscher 2010-12-07 17:33:59
我有同样的问题 - GetItem()
函数返回NULL
拉我的头发了大约一个小时后,我发现我的GetItem()
函数的调用前端和extranet/Anonymous
用户对我试图获取的项目没有读取权限。
因此,请记住检查安全!
请参阅以下文章。 http://sdn.sitecore.net/Articles/API/Context%20and%20databases.aspx
on web.config站点名称=“网站”节点可能指向错误的数据库。数据库属性应该是“主”或“网络”。
我把问题推回去了,因为它已经更新以反映答案 - 所以不再有意义。 – 2011-09-29 14:13:49