2

我正在尝试获取页面的Revisor用户CheckOutUser详细信息。下面是我的代码

Page page = engine.GetObject(package.GetValue("Page.ID")) as Page;
string revisor = page.Revisor.Description;
string currentuser = page.CheckOutUser.Description;

目前,页面由用户“A”更新,用户“B”现在签出页面。但是我得到RevisorandCheckOutUser作为“B”,但修订者应该是“A”

“page.Revisor.Description”正在考虑签出版本而不是当前版本。

如何获得正确的修订者详细信息?

4

2 回答 2

7

TOM.NET API 文档为VersionedItem.Revisor属性声明了以下内容:获取一个值,该值指示上次修改此(此版本)项目的用户。

因此,您确实会得到此时签出该项目的用户,而不是在那之前最后一次修改它的用户。

所以如果你需要以前的 Revisor,你应该打开那个版本的项目,从它的历史中读取它。您可以简单地使用Session.GetObject(TcmUri)您使用以前版本创建 TcmUri 的新实例的位置:TcmUri(itemId, itemType, publicationId, version)

顺便说一句,您提供的代码示例来自模板,但您表示您在事件处理程序中使用它(事件处理程序中没有引擎)。在模板中,您不会得到此结果,因为在发布时应该使用项目的最后签入版本。对于预览,您将看到与现在相同的结果,因为这再次与当前(签出)版本一起使用。

于 2012-07-27T07:41:12.317 回答
3

如果您正在阅读页面的签入版本(即您的 ID 是“tcm:xx-xx-64”),它会按预期工作。但是,如果您正在阅读动态版本(即签出版本-“tcm:xx-xx-64-v0”),您将在相同的时间得到Revisor情况CheckOutUser。原因是您页面的动态版本与签入版本不同。动态版本只是临时对象,其中所有操作都由签出项目的用户完成,因此Revisor对于CheckOutUser这个版本的页面来说,就是签出它的用户。

于 2012-07-27T07:31:49.093 回答