问题是,每次创建ContentItem时我都想创建它的本地化版本。本地化版本应该与原始版本相同,我将进行一些本地化。所以基本上,每当我创建一个指定类型的ContentItem时,我都会复制它并进行本地化更改,将原始ContentItem标记为本地化的ContentItem的LocalizationPart.MasterContentItem,然后保留Item。
最初我尝试在调用IContentHandler.Created方法时创建origianl Item的副本。问题是Controller尚未“TryUpdate”该项,因此它缺少数据。我似乎无法访问控制器,以便尝试手动更新项目。
我也不能等待Controller对TryUpdate()ContentItem,然后通过一些其他IContentHandler方法访问已更新的Item,因为它们在此之前被调用。
此外,持久化新创建的ContentItem是在WorkContext中完成的最后一件事,所以在请求线程非常死亡之前我无法查询数据库。
因此,有关如何复制正在创建的ContentItem并将副本保留为另一个项目的任何见解都会很棒。
答案 0 :(得分:1)
我能够通过IContentHandler.Published方法访问更新的ContentItem。这里的不便之处在于,在ContentItem为“已发布”之前,不会调用该方法。在我的场景中,这不是一个真正的问题,因为我将不显示它们(原始的ContenItem和本地化的ContentItem)或两者都显示。