我想知道是否可以在事件中停止发布流程。 在让用户发布对象之前,我想检查代码隐藏中的一些属性。
答案 0 :(得分:0)
您可以使用可以挂钩的OnStoreChanged
事件的静态DataEvents<T> class。
从api页面使用示例:
DataEvents<IMyDataType>.OnStoreChanged += new StoreEventHandler(DataEvents_OnStoreChanged);
...
void DataEvents_OnStoreChanged(object sender, StoreEventArgs storeEventArgs)
{
if (!storeEventArgs.DataEventsFired)
{
// an external update event happened - DataEvents_OnBeforeAdd not fired
// here a complete cache flush could be done
}
}
如果您关心页面发布,则必须使用DataEvents<IPage>
并检查StoreEventArgs是否为PublicationScope
,它应该告诉您这是否是发布事件。
来自DataEvents<T>.OnStoreChanged
的文档:
在复合C1数据存储发生更改后会触发此事件。这可能是原子操作或对底层数据存储的更大更改。 StoreEventArgs类以宽泛的术语描述更改,包括指示是否已引发详细数据事件的标志。您可以将此事件用作对数据更改作出反应的简单方法(如清除缓存),也可以将其与原子数据事件(添加,删除,更新)混合使用,以使构建更高级缓存。您应该收听此事件以支持跨多个服务器的扩展,因为此事件旨在在另一台服务器上发生更改时发出信号。在这种情况下,详细的数据事件不会在其他机器上触发。
如果您关心事件中确切更改了哪些数据,则必须使用DataEvents<T>
类的其他事件,例如OnAfterUpdate
,并从DataEventArgs
获取此信息。< / p>