在Sitecore中,使用context.Parameters [“renderingId”]和GetItem获取渲染

时间:2015-06-25 22:03:50

标签: c# .net sitecore

我有多个渲染,我在每个自定义体验工具栏中添加一个帮助按钮,用于打开一个新窗口并跳转到帮助文件中的特定锚点。我希望锚点与渲染名称相匹配,例如“容器”或“事件列表”。所以我做了一个自定义命令,我试图使用这个方法来获取渲染项,但由于某种原因,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");
            }

        }

    }
}

1 个答案:

答案 0 :(得分:0)

是的,无论何时在任何sitecore管理站点上执行任何操作,您都将始终将核心数据库作为内容数据库,因此为了使您的工作正常工作,您必须先将数据库设置为主数据库,然后才能使用用于检索Item及其渲染的getItem方法。

快乐的编码!!