Sitecore-创建数据源父级“;“出现了一个错误”;设置子布局

Sitecore-创建数据源父级“;“出现了一个错误”;设置子布局,sitecore,sitecore6,page-editor,Sitecore,Sitecore6,Page Editor,我正试图让Sitecore在“选择数据源”对话框之前创建一个新项目,该对话框在向页面添加新渲染时从页面编辑器打开 我们正在构建一个多站点解决方案,其中每个站点都是这样表示的(概念) 网站将使用分支模板创建,分支模板将根据网站模板、datasourcefolder和startpage创建项目 以下是我希望发生的事情: 添加新的子布局时,请检查源是否存在,如果不存在,请根据指定的模板(定义为父数据源模板并添加到子布局模板)在site1/Datasources/[Module name]中创建新项。然

我正试图让Sitecore在“选择数据源”对话框之前创建一个新项目,该对话框在向页面添加新渲染时从页面编辑器打开

我们正在构建一个多站点解决方案,其中每个站点都是这样表示的(概念)

网站将使用分支模板创建,分支模板将根据网站模板、datasourcefolder和startpage创建项目

以下是我希望发生的事情:

添加新的子布局时,请检查源是否存在,如果不存在,请根据指定的模板(定义为父数据源模板并添加到子布局模板)在site1/Datasources/[Module name]中创建新项。然后将此新项添加到对话框DatasourceRoots中,以允许用户在其下方创建数据源项

我已经成功地实现了一个管道来检查并创建项目(如果它不存在),并且“选择渲染数据源”对话框显示了新创建的项目,并允许用户按照预期在其下方创建新的数据源项目。但是,单击“确定”后,将显示一条警告消息“发生错误”。关闭此对话框并再次执行该操作(当数据源根目录已经存在时)效果很好

使用Reflector,我已经验证了从对话框(Sitecore.Shell.Applications.Dialogs.SelectRenderingDatasourceForm)创建的项是否正确返回,并且对话框是否使用正确的参数关闭,以及是否使用验证项调用SetDialogValue

我想我的问题是;关闭此对话框后会发生什么?触发哪个管道来实际设置渲染上的数据源?我需要找出这个错误是在哪里产生的,当然,修复任何错误


我意识到这可能有点难以理解,如果需要,我很乐意提供代码。

我认为是事件导致了错误,而不是管道处理器。可能是一个令人激动的事件


默认情况下,Sitecore已将
Sitecore.Tasks.ItemEventHandler.OnItemSave
配置为在保存项目时执行。

我们执行的操作非常类似,但作为当前项目的子项。请参考此处的代码:


我会确保您在创建项目时使用的是SiteContextSwitcher。否则,为页面编辑器准备的事件处理程序可能会产生未知的副作用。其中一些事件处理程序是由Sitecore在代码中创建的,不能在配置中禁用。

您可以检查日志中的异常吗?@Maras很遗憾,日志中没有显示任何错误(异常或警告)。如果您将Visual Studio连接到web应用,它是否显示任何错误?否,日志中或调试时没有错误。我猜这不是一个错误,而是一个空检查(或类似的检查),在失败时忽略了SheerResponse.Alert(再次,只是猜测)。您能粘贴创建数据源根的管道代码和用于选择数据源的对话框的url吗?您可以尝试在创建的根目录之外创建一个数据源,并检查它是否工作或失败吗?哦,我根本没有想到这一点。我会注意的!好的,所以我禁用了item:saved和item:saving中的所有事件,但仍然看到“发生错误”警报:(嗯…。那么可能是其中一个客户端管道,例如,在或中禁用了saveUI和uiSaveLayout中的所有内容,但没有任何改进。SiteContextSwitcher就是缺少的!谢谢,谢谢!
site1 (template = website)
    Datasources (template = datasourcefolder)
        Module X Sources (template = module1container)
            Module Source 1 (template = module1)
        Module Y Sources (template = module2container)
        ...
    Home (template = startpage)