我想在编辑器删除块时触发一个事件(使用“内容区”上的“删除”),并且当用户在资产窗格中的块上单击“移动到废纸篓”时。
我发现DataFactory.Instance.MovedContent事件在每次点击“移动到垃圾箱”时触发
但是在点击内容区域上的删除时它不会触发。
更新: -
我正在做这些步骤来实现点击删除
void Instance_SavingContent(object sender, ContentEventArgs e)
{
if (e.Content is ListPdfDocumentBlock)
{
var properties = e.Content.GetType().GetProperties().Where(i => i.PropertyType == typeof(ContentArea));
if (properties != null)
{
List<int> ids = new List<int>();
foreach (var property in properties)
{
ContentArea contentArea = property.GetValue(e.Content) as ContentArea;
if (contentArea != null)
{
foreach (ContentAreaItem contentAreaItem in contentArea.Items)
{
IContent itemContent = contentAreaItem.GetContent();
ids.Add(itemContent.ContentLink.ID);
}
}
}
HttpContext.Current.Items.Add("pdfId", ids);
}
}
}
但是这个代码的问题是,它总是返回更新的id。那么我将如何比较从旧到新的识别哪个块被删除。
从内容区域中删除某些内容时,只需从该内容区域中删除该项目引用。从内容区域中删除的实际内容(例如块/媒体)实际上并未移动/删除(它仍然存在于创建它的位置,通常在某些资产文件夹中)。
因此,当从内容区域移除某些内容时发生的唯一事情是包含内容区域的内容被更改。删除的项目保持不变。
您可以连接PublishingContent
事件并将发布的内容与当前发布的版本(如果有)进行比较,并比较其内容区域中的项目以查看是否添加或删除了任何内容。