我有多个渲染,我在每个自定义体验工具栏中添加一个帮助按钮,用于打开一个新窗口并跳转到帮助文件中的特定锚点。我希望锚点与渲染名称相匹配,例如“容器”或“事件列表”。所以我做了一个自定义命令,我试图使用这个方法来获取渲染项,但由于某种原因,targetItem总是为null。我做错了什么?
public class Help : Command
{
public override void Execute(CommandContext context)
{
Assert.ArgumentNotNull(context, "context");
Assert.IsNotNull(context.Items, "context items are null");
Assert.IsTrue(context.Items.Length > 0, "context items length is 0");
StringBuilder data = new StringBuilder();
var renderId = context.Parameters["renderingId"];
if (Sitecore.Data.ID.IsID(renderId))
{
Sitecore.Data.Items.Item targetItem =
Sitecore.Context.Database.GetItem(renderId);
if (targetItem != null) //never gets the item for me to access it's properties
{
data.Append("Rendering Name: " + targetItem.ToString() + "\r\n");
data.Append("Rendering Display name: " + targetItem.Name + "\r\n");
}
}
}
}
答案 0 :(得分:0)
是的,无论何时在任何sitecore管理站点上执行任何操作,您都将始终将核心数据库作为内容数据库,因此为了使您的工作正常工作,您必须先将数据库设置为主数据库,然后才能使用用于检索Item及其渲染的getItem方法。
快乐的编码!!