我試圖在更改源項目後獲取克隆上的通知。在我們的系統中,當源項目發生更改時,克隆也會自動更改。但是,我們需要自動拒絕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
事件下上面的代碼。