0

问题是,每次创建 ContentItem 时,我都想创建它的本地化版本。本地化版本应该与原始版本相同,但我将进行一些本地化。因此,基本上,每当我创建指定类型的 ContentItem 时,我都会对其进行复制并进行本地化更改,将原始 ContentItem 标记为本地化 ContentItem 的 LocalizationPart.MasterContentItem,然后保留该项目。

最初,当调用 IContentHandler.Created 方法时,我尝试创建原始项目的副本。问题是控制器还没有“尝试更新”项目,所以它缺少数据。我似乎无权访问控制器,以便尝试手动更新项目。

我也等不及控制器 TryUpdate() ContentItem,然后通过其他一些 IContentHandler 方法访问已经更新的 Item,因为在此之前调用了它们。

此外,持久化新创建的 ContentItem 是它在 WorkContext 中完成的最后一件可能的事情,因此在请求线程非常死之前我无法查询数据库。

因此,任何关于如何复制正在创建的 ContentItem 并将副本作为另一个项目保存的见解都会很棒。

4

1 回答 1

1

我能够通过 IContentHandler.Published 方法访问更新的 ContentItem。这里的不便之处在于,在 ContentItem 为“已发布”之前不会调用该方法。不过,在我的场景中,这并不是真正的问题,因为我将不显示它们(原始的 ContenItem 和本地化的 ContentItem)或两者都显示。

于 2012-11-29T22:54:47.873 回答