我想在编辑器删除块(使用内容区域上的“删除”)以及用户单击资产窗格中块上的“移至废纸篓”时触发一个事件。
我发现DataFactory.Instance.MovedContent事件在每次点击“移至垃圾箱”时触发
但是,在内容区域上单击“删除”时,它不会触发。
更新:-
我正在执行这些步骤以实现单击删除
注册事件处理程序以保存页面的事件和保存的事件。
在保存事件中,获取正在保存的页面,通过 ContentArea.Items 从内容区域获取块 id。使用 contentlink.ID 属性。
将这些 id 存储在 List 中,将其存储在内存中的某个位置,最好存储在 httpcontext.items 集合中,因为您只需要它来处理请求,但短期缓存也可以使用。现在您知道编辑器更改之前所有块的 id。
在保存的事件中,获取一个新的 id 列表,如上所示。现在您知道编辑器更改后的 ID。一些块 ID 将丢失。随心所欲地处理那些...
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。然后我将如何从旧到新进行比较以确定哪个块被删除。