如何通过Sitefinity API解锁共享内容块?锁定属性缺失疑问
Sitefinity API解锁共享内容块的锁定问题解决
共享内容块的锁定信息并不存在于
ContentItem对象里,得用LockManager来处理——这是Sitefinity专门管锁定的工具,和PageManager自带锁定属性的逻辑不一样。具体操作步骤:
- 先拿到目标共享内容块的ID
- 通过
LockManager.GetManager()获取锁管理器实例 - 调用
GetLock(itemId)获取锁对象,这里面就包含LockedBy、LockDate这些你需要的锁定相关属性 - 若要解锁,调用
ReleaseLock(lockObject)方法即可,别忘保存更改
示例代码片段:
using Telerik.Sitefinity.Model.Locking; using Telerik.Sitefinity.Modules.GenericContent; // 获取内容管理器 var contentManager = ContentManager.GetManager(); // 根据ID获取目标共享内容块 var contentItem = contentManager.GetContentItem(new Guid("替换成你的内容块ID")); // 获取锁管理器 var lockManager = LockManager.GetManager(); // 拿到该内容块的锁对象 var itemLock = lockManager.GetLock(contentItem.Id); // 判断是否处于锁定状态,是则解锁 if (itemLock != null && itemLock.IsLocked) { lockManager.ReleaseLock(itemLock); lockManager.SaveChanges(); }
- 补充说明:Sitefinity的内容模块(包括共享内容块)的锁定逻辑是由独立的锁系统管控的,UI上显示的锁定状态就是从这个系统读取的,所以API层面必须通过
LockManager操作,无法直接从ContentItem对象中获取锁定属性。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

