我试图在更改源项目后获取克隆上的通知。在我们的系统中,当源项目发生更改时,克隆也会自动更改。但是,我们需要自动拒绝Sitecore通知,说明“原始项目中的某个字段已更改”并提供审阅/接受/拒绝选项。问题是在克隆上使用GetNotifications()
会返回0个元素 - 这意味着Sitecore没有找到任何通知。但是,当我重新加载/重新打开克隆时,我清楚地看到它们。Sitecore NotificationProvider.GetNotifications为空
我试着重装使用项目:运行GetNotifications()之前
item.Reload();
和
Context.ClientPage.SendMessage(this, "item:load(id=" + item.ID + ")");
,但既不发出的通知大于零的计数。
这是我使用的完整的代码(其中copyItem
是我的克隆)int k
是一个测试,它返回0
using (new SecurityDisabler())
{
if (copyItem.IsClone)
{
var notifies = Database.GetDatabase("master").NotificationProvider.GetNotifications(copyItem);
int k = -1;
if (notifies != null) k = notifies.Count();
foreach (Notification n in notifies)
{
n.Reject(copyItem);
}
}
}
注:我打电话OnItemSaved
事件下上面的代码。