我正在尝试为页面提供Revisor
和CheckOutUser
用户详细信息。以下是我的代码
Page page = engine.GetObject(package.GetValue("Page.ID")) as Page;
string revisor = page.Revisor.Description;
string currentuser = page.CheckOutUser.Description;
目前,该页面由用户“A”更新
和用户“B”现在检查页面。但我得到Revisor
和CheckOutUser
为“B”,但是主管应该是“A”
“page.Revisor.Description”正在考虑签出版本而不是当前版本。
如何获得正确的revisor详细信息?
答案 0 :(得分:7)
TOM.NET API文档为VersionedItem.Revisor
属性声明了以下内容:获取一个值,该值指示上次修改此项(此版本)项的用户。
所以你确实会让那个签出该项目的用户而不是那个在此之前修改过它的用户。
因此,如果您需要拥有以前的Revisor,则应打开该项目的版本,并从其历史记录中读取该版本。您只需使用Session.GetObject(TcmUri)
使用以前的版本创建TcmUri的新实例:TcmUri(itemId, itemType, publicationId, version)
顺便提一下,您提供的代码示例来自模板,但您表明您在事件处理程序中使用它(事件处理程序中没有引擎)。在模板中,您不会得到此结果,因为在发布时应使用项目的最后一个签入版本。对于预览,您将看到与现在相同的结果,因为它再次与当前(检出)版本一起使用。
答案 1 :(得分:3)
如果您正在阅读页面版本(即您的ID为“tcm:xx-xx-64”),则按预期工作。 Hovewer如果您正在阅读动态版本(已检出版本 - “tcm:xx-xx-64-v0”),那么当Revisor
和CheckOutUser
相同时,您将会遇到这种情况。原因是您的页面的动态版本与签入的版本不同。动态版本只是临时对象,其中所有操作都由签出该项目的用户完成,因此此版本页面的Revisor
和CheckOutUser
是签出该用户的用户。